c++ 静态成员函数怎么使用this

如题所述

是这个样子吧classA{public:A():a(0){};A(inta0):a(a0){};intfun()const//表示函数的小括号是要写的,不能省略{cout<<a<<endl;};private:inta;};下面示范一下classA{public:A():a(0){};A(inta0):a(a0){};intsetA(inta0){a=a0;};intsetA2(inta0,intb0){Ab(b0);a=a0+fun(b);//没有任何问题的,非常函数可以调用常函数,};intfun(A&a1)const//表示函数的小括号是要写的,不能省略{//setA(a1.a);//错误,常函数不能通过this指针调用非常函数!!!a1.setA(100);//没有任何问题的,因为不是通过this指针修改的。//a1和*this对象没有任何关系cout<<a<<endl;//a=10;//错误,常函数,不能修改(通过隐藏的this指针)类对象的的任何成员。a1.a=10;//这是没有任何问题的,因为不是通过this指针修改的。returna;};private:inta;};这个const表示这是个常函数,又叫访问函数,不会修改(通过隐藏的this指针)类对象的的任何成员不会是静态方法,绝对不会是const方法(静态方法没有隐藏的this指针)constAax(10);ax.setA(3);//错误,常量对象不可以调用非常函数,只能调用常函数。intv=ax.fun();//没有问题,常量对象可以调用非常函数,而且只能调用常函数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-07
不能直接用this,添加一个静态的指向本类的指针成员,把this赋值给它本回答被提问者采纳
第2个回答  2017-07-10
传一个对象指针做为参数
第3个回答  2017-03-07
最好的办法是用c++做一次封装,封装成c的接口,然后给c语言调用。
相似回答