描述你的问题
为什么下面的这段代码里面,类的拷贝函数中的参数,是Base类的一个引用,Base类声明有一个私有的数据成员num,为什么拷贝函数中,x可以直接访问x的私有数据成员num。如果在main函数里面声明一个Base 类的对象,如Base test; 不可能直接test.num调用这个数据成员啊?为什么在类里面却又可以啊?
贴上相关代码
`#include <iostream>
class Base
{
private:
int num;
public:
Base(int tmp = 0) : num(tmp) {}
const Base& operator=(const Base& tmp)
{
num = tmp.num;
return *this;
}
};
int main()
{
return 0;
}`
贴上报错信息
贴上相关截图
已经尝试过哪些方法仍然没解决(附上相关链接)
巴扎黑2017-04-17 13:26:16
你可以認為這個是約定好的特例:拷貝建構函數屬於這個類別的成員函數,能存取參數物件的私有成員也可以理解。
從語言設計上來說,怎麼設計都可以。但是如果設計成不能訪問,那就必須把內部成員暴露出來(成員public或提供get函數),這不是個好的選擇。