参考的复制构造可以使用私有成员变量
Copy-construct from reference can use private member variables
为什么在复制构造函数中我们可以使用 rect.p
,在 main()
中我们不能?
class Rect
{
public:
Rect()
{
p = new int(100);
}
Rect(const Rect& r)
{
width = r.width;
height = r.height;
p = new int(100);
*p = *(r.p); // OK
}
~Rect()
{
assert(p != NULL);
delete p;
}
private:
int width;
int height;
int *p;
};
int main()
{
Rect rect1;
rect1.p = new int(200); // error
Rect rect2(rect1);
return 0;
}
p 是您班级的私人成员,因此,您的班级只有A 方法才能访问和/或修改它。<<<<<<
如果您想进一步了解,请对Getters和Setter进行一些研究。
,因为班级的所有成员都是彼此的朋友。私人数据成员只能由班级或朋友类的成员修改。
尝试在main()
中访问rect.p
时,您正在尝试从公共接口访问私人数据成员。
编辑:修复了措辞错误
这是关于访问类的基本问题。
您在"私人"中定义的所有内容:班级的所有成员,功能,朋友,朋友/功能都可以访问"私人"块中的内容。
您在"公共"中定义的所有内容:在"私人"的另一侧,每个人都可以访问"公共"块中的东西。整数指针P在"私有"块中定义,因此可以由构造函数使用(因为构造函数是类的一部分)。但是主要功能是"淘汰"类。因此,主要功能无法访问指针p。
如果要在主要功能中获取点P,则可以定义一个公共函数" getPointer()"以返回指针p并调用" getPointer()"在MAIM函数中。
回到您的代码。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 将包含C样式数组的对象初始化为成员变量(C++)
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 在循环中按顺序遍历成员变量
- c++类声明时,相同的例程,不同的成员变量类型
- 如何从另一个文件继承私有成员变量和公共函数
- 在C++类中,是否必须初始化作为数组的成员变量
- 如何从子成员函数修改父公共成员变量
- 我可以在 C++ 中将数据成员/变量从其定义之外添加到结构中吗?
- 从私有成员变量的成员方法返回unique_ptr
- 在派生类中使用基类的私有成员变量的最佳方法
- 静态 constexpr 类成员变量对多线程读取是否安全?
- C++:是否可以使用非静态成员变量模板?
- 打印所有继承的类成员变量和方法
- 如何在复杂继承中访问静态成员变量
- 为什么我不能在返回 const 的布尔函数中为类成员变量赋值?C++
- 成员变量与函数概念检查