相关疑难解决方法(0)

虚拟赋值运算符C++

C++中的赋值运算符可以是虚拟的.为什么需要它?我们可以让其他运营商也虚拟化吗?

c++ virtual virtual-functions operator-overloading

66
推荐指数
5
解决办法
6万
查看次数

具有虚拟赋值运算符的多态性

我不明白为什么下面的代码调用了base的类(= A)的实现

A::operator=(A&)
Run Code Online (Sandbox Code Playgroud)

(由输出行15和17表示)每当作为参数传入的引用属于派生类类型时.由于所有指针都指向派生类的对象,因此我希望所有调用都具有相同的行为(=从派生类B调用运算符).

执行下面列出的代码时输出:

  1. A :: Ctor objID = 1280 text = BObject1
  2. B :: Ctor objID = 1280 text = BObject1
  3. A :: Ctor objID = 3279 text = BObject2
  4. B :: Ctor objID = 3279 text = BObject2
  5. --- ptrA-> print():
  6. B :: print()objID = 1280 text = BObject1
  7. B :: print()objID = 3279 text = BObject2
  8. ---*ptrAObj1 =*ptrAObj2:
  9. B :: operator =(A&)objID = 1280 text = BObject1
  10. --- ptrAObj1-> operator =(*ptrAObj2):
  11. B :: operator =(A&)objID = …

c++

3
推荐指数
1
解决办法
98
查看次数