因为要写一个string类,在编写复制构造函数时,发现居然可以访问对象的private变量,故百度之,发现原来的认识很浅显。
代码如下:
TString::TString(const TString &string1)
{
int len = strlen(string1.buf);
buf = new char[len+1];
// memcpy(buf,&string1,len);
strcpy(data,string1.data);
}
其中data为private变量,但在复制构造函数中确访问了string1的data变量。此方法是可以的。
原理见引用这篇文章。
关键应用:
访问类的private变量。
class NUM
{
private:
int data;
public:
NUM(){data=0;}
~NUM(){};
NUM(int data_){data=data_;}
void getw(NUM &a){std::cout<<a.data<<std::endl;}
};
调用方法:
NUM W;
NUM a(1);
NUM b(2);
W.getw(a);
W.getw(b);
需要完善,正常情况下的public、protect、private访问控制。