拷贝函数的参数作用域问题?
例如我定义了一个单链表的拷贝函数。
linklist<elemtype>::linklist(const linklist& otherl){
linknode *p;
linknode *op;
op=otherl.head这里为什么可以直接把head的地址直接给op呢?head是linklist的私有变量,怎么可以直接调用呢?不是要otherl.gethead()吗?是不是因为有别名符&在的原因呢?
类 单链表
[解决办法]
私有访问权限是针对类的而不是针对对象的。really? why??
class X
{
int a;
public:
int fun(X& x)
{
return a+x.a;
}
};
int main(void)
{
X y;
X x;
x.fun(y);
return 0;
}
楼主可能会理解成为成员函数fun可以访问类中私有的数据a,但是对于为什么x.a也可以访问就犹豫不解了。如果参数中强制使用this指针,他很早就会发现成员函数内部 对象/引用/指针可以访问私有数据,然后就会进一步想为什么,然后就会发现c++中访问权限控制是针对类的,而不是针对对象的。这样就不会有类似 成员函数内部x.a合法 的不解了。
也就是说私有访问权限是针对类的而不是针对对象的。