本人水平优先,若有错误,妄留言指出,谢谢.
1.this指针解答:
class obejct {
private: int x;
public: void setX( value)
{
x = value
}
}; //类在后面不断扩充
object ob; //定义对象
object ob1;
this指针其实就是 &ob 即 &ob == this,就是对象的地址. 每个对象的实体其实只包含成员变量,而不包括成员函数.那么成员函数和变量是怎么联系起来的?
对象ob.setX(1); 和ob1.set(2); 是调用的同一个函数,置不过隐式的传递了this指针(ob的地址),显示 ob.set(&ob,1); 而在函数调用时:
this.x = 1; this指针也会被加在上面. 这样就完成了函数调用.
补充说明this指针: ob对象在内存中占4个字节即值存在 x变量. xxxx: 00 00 00 00 //类似于这个 而&ob 即ob的地址其实就是 变量x地址
即 this == &ob == &(ob.x) //想验证的可以在VC下调试下
2.引用作为参数或者返回值:
int& get(int& x);与 int get(int x); //明白他们的区别也就明白了引用
前一个函数不会调用拷贝够咱函数,其实也是传递的地址,从而可以更改x的值在函数外有效
3.返回指针的引用
class obejct {
private: int x;
public: int *& getX( value)
{
return &x;
}
};
返回指针的引用.即指针也不会调用拷贝构造函数,而是直接传递x地址 . object ob; int * x = get(value); // 在复制的时候还是需要调用拷贝构造函数的.