C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c++ 构造函数中调用虚函数的实现方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我们知道:C++中的多态使得可以根据对象的真实类型(动态类型)调用不同的虚函数。这种调用都是对象已经构建完成的情况。那如果在构造函数调用函数,会怎么样呢?

有这么一段代码:

class A
{
public:
  A ():m_iVal(0){test();}
  virtual void func() { std::cout<<m_iVal<<‘ ';}
  void test(){func();}
public:
int m_iVal;
};
class B : public A
{
public:
  B(){test();};
  virtual void func()
  {
    ++m_iVal;
    std::cout<<m_iVal<<‘ ';
}
};
int main(int argc,char* argv[])
{
  A*p = new B;
  p->test();
  return 0;
}

输出: 0 1 2

也就是说,在构造函数调用函数调用的是正在构造的类中的虚函数,而不是子类的虚函数

理一下程序。new了一个B对象,首先要调用基类构造函数,也就是A类的构造函数调用test(),再调用函数func(),这时候用的是基类版本。之后再调用子类B的构造函数,这时调用的是子类虚函数func()。至于最后一次调用func(),根据多态,调用的是真实虚函数

以上就是小编为大家带来的c++ 构造函数调用函数实现方法全部内容了,希望大家多多支持编程小技巧~

大佬总结

以上是大佬教程为你收集整理的c++ 构造函数中调用虚函数的实现方法全部内容,希望文章能够帮你解决c++ 构造函数中调用虚函数的实现方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。