什么函数不能声明为虚函数 为什么构造函数不能是虚函数?
为什么构造函数不能是虚函数?
构造函数不能声明为虚拟函数的原因是所谓的虚拟函数在多态性的情况下只执行一个。从继承的概念来看,总是需要先构造父类对象,然后再构造子类对象。如果构造函数设置为虚函数,那么在构造父类构造函数时,必须显示调用构造。另一个原因是为了防止意外重写与父类的构造函数相同的子类中的函数,父类的构造函数将被重写,也就是说,父类的构造将不会完成,并且会发生错误。----在子类继承父类的public方法之后,可以向public添加新的方法和属性(属性通常放在private或protect中)。这是正确的继承的基本用法是虚拟函数和纯虚拟函数可以在它们的子类中被重写。它们之间的区别在于:(1)纯虚函数只有定义,没有实现,虚函数既有定义又有实现代码。纯虚函数一般没有代码实现部分,如virtual void print()=0,而一般虚函数必须有代码实现部分,否则函数将是未定义的。Virtual void print(){printf(“this is Virtual functionn”)}(2)包含纯虚函数的类不能定义其对象,而包含虚函数的类可以定义其对象。
什么函数不能声明为虚函数 不能说明为虚函数的是 虚函数有什么用
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。