C++ 基于研究,解释为什么构造函数不能是虚拟的:如果有错误,请更正错误
我做了一些研究来找出为什么构造函数不能是虚拟的。我在这里巩固我的理解 我将首先解释什么是虚函数,然后根据第一个解释解释为什么构造函数不能是虚函数 什么是C++ 基于研究,解释为什么构造函数不能是虚拟的:如果有错误,请更正错误,c++,constructor,virtual-functions,dynamic-binding,C++,Constructor,Virtual Functions,Dynamic Binding,我做了一些研究来找出为什么构造函数不能是虚拟的。我在这里巩固我的理解 我将首先解释什么是虚函数,然后根据第一个解释解释为什么构造函数不能是虚函数 什么是虚拟函数? 虚函数是基类中的函数或方法 可以在派生类中由具有 同样的签名。换句话说,虚拟函数允许具有 派生类中基类方法的自定义实现 班级。它需要用virtual关键字声明。当时 对于虚拟函数调用,决定选择哪个版本 函数定义(在基类或派生类中)的 运行时,具体取决于调用对象的类型(动态 绑定) 当一个函数被声明为虚函数时,它告诉编译器 将调用虚拟函
虚拟函数
?
虚函数是基类中的函数或方法
可以在派生类中由具有
同样的签名。换句话说,虚拟函数允许具有
派生类中基类方法的自定义实现
班级。它需要用virtual
关键字声明。当时
对于虚拟函数调用,决定选择哪个版本
函数定义(在基类或派生类中)的
运行时,具体取决于调用对象的类型(动态
绑定)
当一个函数被声明为虚函数时,它告诉编译器
将调用虚拟函数的对象的类型应为
仅在运行时确定。然后根据对象的类型,
函数调用应该绑定到函数定义和
应该调用适当的函数
为什么构造函数不能是虚拟的?
当一个函数被声明为虚函数时,它告诉编译器
将调用函数的对象的类型应为
仅在运行时确定,然后调用适当的
基于对象类型的函数版本
如果构造函数被声明为虚拟的,它会告诉
编译器调用构造函数的对象类型应该是
在运行时确定。但对于构建一个对象,确切的
对象的类型应该在编译时而不是在运行时知道。
这就是构造函数不能是虚拟的原因
我希望SO成员纠正两个答案中的错误(如果有)。如果你能把答案重新写下来作为你的答案,而不是仅仅指出错误,我想这会对我和其他人有所帮助。可能的重复请不要关闭这个问题。它恰巧与上一个问题的标题相同。但需求是不同的,我已经修改了问题的标题。它不是复制品。它恰好与前面的问题标题相同