如何将一个类的两个单独实例设置为彼此相等的 c++
How to set two separate instances of a class equal to each other c++
我知道,对于类,私有成员只能由公共成员访问。但是这是否适用于类的每个离散实例,或者一个实例的公共成员可以直接访问另一个实例的私有成员。
例如,假设类有两个实例:instance1
和 instance2
。并说班级有一个私人成员x
和公共成员getX()
和setX()
。如果我想将instance1.x
设置为等于instance2.x
如果以下内容是正确的:
instance1.setX(instance2.x)
或
instance1.setX(instance2.getX())
类的实例可以查看同一类的另一个实例的私有成员。
一个类的实例看不到另一个类的另一个实例的私有成员。
类的实例可以查看不同类的另一个实例的公共成员。
当我们说"可以看到"时,我们的意思是成员在类方法实现的范围内。
class A
{
public:
Foo() { x = 10; } // is legal
Bar(A & another) {another.x = 12;} // is legal
private:
int x;
};
int main()
{
A a;
A b;
a.Bar(b); // Is legal
return 0;
}
您可以使用
的该类成员函数或其好友的内部代码
instance1.setX(instance2.x);
instance1.x = instance2.x;
this->x = instance2.x;
x = instance2.x;
否则,您需要编写
instance1.setX(instance2.getX());
好吧
,想想你在哪里称呼instance1.setX()
.假设您在某个函数foo()
中调用它:
void foo() {
...
instance1.setX(instance2.x);
...
}
如果foo()
不是Instance
类的成员或friend
,那么它就无法访问instance2.x
;你必须在这里使用getter:instance2.getX()
。
否则,您可以使用任一方法:instance2.x
或 instance2.getX()
。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 嵌套在类中时无法设置成员数据
- 需要帮助设置在C++中使用的Potrace
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 如何在Ubuntu中使用cmake设置qt4
- ld:bind_at_load和-bitcode_bundle(Xcode设置ENABLE_bitcode=YES)不能
- 如何在boost beast http请求中设置http头
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 如何在24位SDL_Surface上设置像素的颜色
- std::设置自定义比较器
- 如何设置一个范围来提取我想要获得的信息
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 通过选项卡的文本设置QTabWidget顺序
- 将特征矩阵的向量设置为0
- 我可以检测和更改 gcc/g++ 中结构的当前数据对齐设置吗?