请教问题,就是注释后面有很多问号的那两行,other这个引用怎么能直接访问私有成员?
#include<iostream>
#include<string>
using namespace std;
class X{
int a;
char *b;
float c;
public:
X(int x1,char *x2,float x3):a(x1),c(x3){
b=new char[sizeof(x2)+1];
///strcpy(b,x2);
b=x2;
cout<<"USING FLOAT"<<endl;
}
X():a(0),b("X::X()"),c(10){cout<<"USING NULL"<<endl;}
X(int x1,char *x2="X::X(....)",int x3=10):a(x1),b(x2),c(x3){cout<<"USING INT"<<endl;}
X(const X& other){
a=other.a;//?????????????????、??
b="X::X(const X& other)";
c=other.c;//?????????????????????
}
void print(){
cout<<"a="<<a<<"\t"<<"b="<<b<<"\t"<<"c="<<c<<endl;
}
};
void main(){
X *A=new X(4,"X::X(int ,char,float)",32);
X B,C(10),D(B);
A->print();
B.print();
C.print();
D.print();
} class ,c++
[解决办法]
成员访问控制 是限制类的,不是对象。
other是同一个类的对象,当然可以访问了。
[解决办法]
#1 不是都说了吗。
在类成员函数内部,可以访问本类的私有数据,不管该数据是当前对象的,还是本类其他对象的。
终于想通了,虽然other这个对象直接访问了私有成员但它是在类的成员函数中,其实是帮助成员函数来访问私有数据,是不是这个意思?