小编nup*_*ler的帖子

C++ 中 operator= 的奇怪行为

我有一个基类 A 和两个派生类 B 和 C。 B 定义了 = 运算符,将基类 A 作为参数。

在类 B 上调用 = 时,有时会调用基类 A 的运算符而不是 B 中的运算符。

class A {
        public:

        void operator=(A &) {
                printf("A =\n");
        };
};

class B : public A {

        public:

        void operator=(A &s) {
                printf("B =\n");
        };
};

class C : public A {
};

int main()
{
        B b1, b2;
        C c;

        b1 = b2;
        b1 = c;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

A =
B =
Run Code Online (Sandbox Code Playgroud)
  • 为什么第一个赋值不调用 B::operator=()?

  • 为什么第二个赋值不调用 A::operator=() ,因为它也是从 …

c++ inheritance assignment-operator

7
推荐指数
1
解决办法
75
查看次数

标签 统计

assignment-operator ×1

c++ ×1

inheritance ×1