首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请大侠帮忙解惑啊解决办法

2012-03-31 
请大侠帮忙解惑啊!!!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.
[解决办法]
探讨

两个都是多余写法
都可以直接写成j=i

this指针常用来传递给类外,让外部可以使用指针调用这个类
::常用来访问类的静态变量和静态函数,或者子类覆盖了父类的函数后调用父类的该函数

这个既无关继承又是在类内的调用,既不需要this指针也不需要::符
直接j=i完事,多写一个字符都碍事

[解决办法]
两种寻址方式嘛~ 找到一样的地址内容自然一样了
[解决办法]
this指向当前对象。调用成员函数的时候会把当前对象的this指针放在ecx(?)里面。
这里this->i也就是i。

@3楼,不过有时候为了代码清楚还是会写这样的代码: this->i=i;i是成员函数参数

不过A::i用在这里没有问题么?这里i并不是静态变量。编译器不会报错么?
[解决办法]
类名默认就有的,没有静态成员时一般不必用类名
[解决办法]
探讨

this指向当前对象。调用成员函数的时候会把当前对象的this指针放在ecx(?)里面。
这里this->i也就是i。

@3楼,不过有时候为了代码清楚还是会写这样的代码: this->i=i;i是成员函数参数

不过A::i用在这里没有问题么?这里i并不是静态变量。编译器不会报错么?

热点排行