如何将一个类的两个单独实例设置为彼此相等的 c++

How to set two separate instances of a class equal to each other c++

本文关键字:c++ 设置 实例 一个 两个 单独      更新时间:2023-10-16

我知道,对于类,私有成员只能由公共成员访问。但是这是否适用于类的每个离散实例,或者一个实例的公共成员可以直接访问另一个实例的私有成员。

例如,假设类有两个实例:instance1instance2 。并说班级有一个私人成员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.xinstance2.getX()