C++在构造函数中调用成员函数,实例化子类,输出结果有些出乎意料

2017-05-03 13:25:10 +08:00
 sbabybird

试验代码如下

class CHello {
 public:
  CHello()
  {
    this.SayHello();
  }
  virtual ~CHello();
  virtual void SayHello()
  {
    printf("hello");
  }
};

class CHelloA : public CHello {
 public:
  CHelloA();
  ~CHelloA();
  void SayHello() 
  {
    printf("hello a");
  }
};

void main() 
{
  CHelloA a;
}

猜猜输出什么?

2539 次点击
所在节点    C
22 条回复
visionsmile
2017-05-10 23:46:37 +08:00
楼主了解下 C++类的构造顺序就明白了。
Frost
2017-06-06 10:02:16 +08:00
effective C++里面提到过,同样的状况会出现在基类引用或指针调用基类虚函数的默认参数里,它只会认基类那个虚函数的默认参数。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/358777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX