虚函数与纯虚函数 为什么构造函数不能是虚函数?
浏览量:2530
时间:2021-03-12 02:17:08
作者:admin
为什么构造函数不能是虚函数?
构造函数不能声明为虚拟函数的原因是所谓的虚拟函数在多态性的情况下只执行一个。从继承的概念来看,总是需要先构造父类对象,然后再构造子类对象。如果构造函数设置为虚函数,那么在构造父类构造函数时,必须显示调用构造。另一个原因是为了防止意外重写与父类的构造函数相同的子类中的函数,父类的构造函数将被重写,也就是说,父类的构造将不会完成,并且会发生错误。----在子类继承父类的public方法之后,可以向public添加新的方法和属性(属性通常放在private或protect中)。这是正确的,似乎环境是MSVC。如果目标文件中有一个符号表,实际上,最直观的方法是转到符号表,找出与修改后的构造函数名称相对应的地址项。如何操作取决于主体需要在什么条件下找到地址去做。
构造函数为什么不可以声明为虚函数?
不要在构造函数中调用虚拟函数。在基类的构造中,虚函数是非虚函数,不会进入派生类。它是一个静态绑定。很明显,当我们构造对象的子类时,我们调用基类的构造函数并构造子类的基类部分。子类尚未构造且尚未初始化。如果在基类的构造中调用虚函数,如果可能的话,调用一个尚未初始化的对象是非常危险的,所以在构造父类对象的部分时,不允许调用子类的虚函数实现。但这并不意味着你不能写这样的程序
构造函数的左右两边是初始化变量的值等等。VC的语法是只要用户定义了构造函数,系统就不会提供任何构造函数。如果将其定义为虚拟函数,则程序无法在开始时初始化变量,也无法应用内存空间,程序也无法运行
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。
上一篇
网页字体大小 网页设计字体大小