前言:
眼前看官们对“c语言addone函数是什么意思”可能比较关怀,同学们都需要剖析一些“c语言addone函数是什么意思”的相关内容。那么小编在网络上网罗了一些关于“c语言addone函数是什么意思””的相关内容,希望大家能喜欢,兄弟们快快来了解一下吧!C++定义的类中的成员函数除了静态成员函数以外,都隐含了一个this指针参数,这个this指针的类型就是其作用域的类。为简洁起见,既然这些成员函数都需要一个这样的指针,就隐含起来吧(在phthon中是要显式使用指向自身的对象的)。但当编译时,编译器会做类型清除的动作,编译时会添加类类型的this指针,理解了编译器的行为,也就明白了this指针的操作实质。
以下就是一个C++的代码与对应的C代码的小实例:
#if(1) //用带类的C++小实例#include <iostream.h>class CCar{public: int price; void SetPrice (int p); }; void CCar::SetPrice (int p) { price = p; //也可以显示地写出来:this->price = p;} void main(){ CCar car; car.SetPrice(20000); cout<<car.price;}#endif#if(0) //上面C++小实例翻译成对应的C#include <iostream.h>struct CCar{ int price;};void SetPrice(struct CCar* pthis,int p){pthis->price = p; } void main(){ struct CCar car; SetPrice( &car, 20000); cout<<car.price;}#endif
非静态成员函数中可以直接使用this来代表指向该函数作用的对象的指针,当需要返回类对象时,就需要显式使用this指针:
#include <iostream>using namespace std;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指针的实质:
#if(0) //指向类类型的指针调用成员函数(成员函数没有成员变量时)#include <iostream>using namespace std;class A {int i ; public: void Hello() { cout << "hello" << endl; } }; void main(){ A * p = NULL; p->Hello();//翻译成C代码就是Hello(p),而p在函数体中并未使用,所以并不会出错 system("pause");}//程序输出:hello#endif#if(1)//成员函数有成员变量时,不能用空指针调用成员函数#include <iostream>using namespace std;class A { int i; public: void Hello() { cout <<i<< "hello" << endl; } }; void main(){ //A * p = NULL; //如果成员函数中引用了成员数据,则不能用指针来直接调用了,需一个实际的对象 A a; a.Hello(); system("pause");}#endif
操作符重载可以是成员函数或非成员的友元。当重载为成员函数时,因为有一个隐含的this对象指针,所以二元的操作符只需要一个参数即可,一元的操作符不需要参数。当重载为友元时,因为没有隐含的this对象指针,二元的操作符需要两个参数,一元的一个参数。如有一个Sample类,要重载运算符+,重载成成员函数和非成员函数的声明:
Sample operator+(Sample &s);friend Sample operator+( Sample &s1, Sample &s2);
需要注意的是,静态成员函数中不能使用 this 指针! 因为静态成员函数并不具体作用与某个对象! 因此,静态成员函数的真实的参数的个数,就是程序中写出的参数个数!
-End-
标签: #c语言addone函数是什么意思