C++中的赋值运算符可以是虚拟的.为什么需要它?我们可以让其他运营商也虚拟化吗?
我不明白为什么下面的代码调用了base的类(= A)的实现
A::operator=(A&)
Run Code Online (Sandbox Code Playgroud)
(由输出行15和17表示)每当作为参数传入的引用属于派生类类型时.由于所有指针都指向派生类的对象,因此我希望所有调用都具有相同的行为(=从派生类B调用运算符).
执行下面列出的代码时输出:
- A :: Ctor objID = 1280 text = BObject1
- B :: Ctor objID = 1280 text = BObject1
- A :: Ctor objID = 3279 text = BObject2
- B :: Ctor objID = 3279 text = BObject2
- --- ptrA-> print():
- B :: print()objID = 1280 text = BObject1
- B :: print()objID = 3279 text = BObject2
- ---*ptrAObj1 =*ptrAObj2:
- B :: operator =(A&)objID = 1280 text = BObject1
- --- ptrAObj1-> operator =(*ptrAObj2):
- B :: operator =(A&)objID = …