请大侠帮忙解惑啊解决办法
请大侠帮忙解惑啊!!!C/C++ code#includeiostream#includestdlib.husing namespace stdclass A{public
请大侠帮忙解惑啊!!!
C/C++ code#include<iostream>#include<stdlib.h>using namespace std;class A{public: int i; int j; int l; A() { i=1; } void movevalue() { j=this->i; //哪位大侠能够解释一下movevalue()和movevalue2()的区别吗? } void movevalue2() { j=A::i; }};class B:public A{public:};int main(){ B b; b.i=3; cout<<"b's i is:"<<b.i<<endl; b.movevalue2(); cout<<"b's member j is:"<<b.j<<endl; system("pause");}
困惑见代码,即解释::操作符号和this指针在这里的区别
[解决办法]没区别。第2中实际上就是 j=this->A::i;
[解决办法]两个都是多余写法
都可以直接写成j=i
this指针常用来传递给类外,让外部可以使用指针调用这个类
::常用来访问类的静态变量和静态函数,或者子类覆盖了父类的函数后调用父类的该函数
这个既无关继承又是在类内的调用,既不需要this指针也不需要::符
直接j=i完事,多写一个字符都碍事
[解决办法]才识学浅,看不出区别,好像没区别吧,都相当于i.
[解决办法][解决办法]两种寻址方式嘛~ 找到一样的地址内容自然一样了
[解决办法]this指向当前对象。调用成员函数的时候会把当前对象的this指针放在ecx(?)里面。
这里this->i也就是i。
@3楼,不过有时候为了代码清楚还是会写这样的代码: this->i=i;i是成员函数参数
不过A::i用在这里没有问题么?这里i并不是静态变量。编译器不会报错么?
[解决办法]类名默认就有的,没有静态成员时一般不必用类名
[解决办法]