程序设计实习: 3.7this指针
this 指针 信息科学技术学院《程序设计实习》 郭炜 刘家瑛
2 C++程序到 C程序的翻译 class CCar { public: int price; void SetPrice (int p); }; void CCar::SetPrice (int p) { price = p; } int main() { CCar car; car.SetPrice(20000); return 0; } struct CCar { int price; }; void SetPrice (struct CCar * this , int p) { this - >price = p; } int main() { struct CCar car; SetPrice( & car, 20000); return 0; }
3 this指针作用
其作用就是指向成员函数所作用 的对象
4 this指针作用 class Complex { public: double real, imag; void Print() { cout << real << "," << imag ; } Complex(double r,double i):real(r),imag(i) { } Complex AddOne() { this->real ++; //等价于 real ++; this->Print(); //等价于 Print return * this; } }; int main() { Complex c1(1,1),c2(0,0); c2 = c1.AddOne(); return 0; } //输出 2,1 非静态成员函数中可以直接使用this来代表指向该函数 作用的对象的指针。
5 this指针作用 class A { int i ; public: void Hello() { cout << "hello" << endl; } }; int main() { A * p = NULL; p ->Hello(); //结果会怎样? }
6 this指针作用 class A { int i; public: void Hello() { cout << "hello" << endl; } };
void Hello(A * this ) { cout << "hello" << endl; } int main() { A * p = NULL; p->Hello(); Hello(p); } // 输出:hello
7 this指针作用 class A { int i ; public: void Hello() { cout << i << "hello" << endl; } }; void Hello(A * this ) { cout << this - >i << "hello" << endl; } //this若为NULL,则出错!! int main() { A * p = NULL; p ->Hello(); Hello(p); } // 输出:hello
8 this指针和静态成员函数 静态成员函数中不能使用 this 指针! 因为静态成员函数并不具体作用与某个对象! 因此,静态成员函数的真实的参数的个数,就是程 序中写出的参数个数!
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.