Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基于研究,解释为什么构造函数不能是虚拟的:如果有错误,请更正错误_C++_Constructor_Virtual Functions_Dynamic Binding - Fatal编程技术网

C++ 基于研究,解释为什么构造函数不能是虚拟的:如果有错误,请更正错误

C++ 基于研究,解释为什么构造函数不能是虚拟的:如果有错误,请更正错误,c++,constructor,virtual-functions,dynamic-binding,C++,Constructor,Virtual Functions,Dynamic Binding,我做了一些研究来找出为什么构造函数不能是虚拟的。我在这里巩固我的理解 我将首先解释什么是虚函数,然后根据第一个解释解释为什么构造函数不能是虚函数 什么是虚拟函数? 虚函数是基类中的函数或方法 可以在派生类中由具有 同样的签名。换句话说,虚拟函数允许具有 派生类中基类方法的自定义实现 班级。它需要用virtual关键字声明。当时 对于虚拟函数调用,决定选择哪个版本 函数定义(在基类或派生类中)的 运行时,具体取决于调用对象的类型(动态 绑定) 当一个函数被声明为虚函数时,它告诉编译器 将调用虚拟函

我做了一些研究来找出为什么构造函数不能是虚拟的。我在这里巩固我的理解

我将首先解释什么是虚函数,然后根据第一个解释解释为什么构造函数不能是虚函数

什么是
虚拟函数

虚函数是基类中的函数或方法 可以在派生类中由具有 同样的签名。换句话说,虚拟函数允许具有 派生类中基类方法的自定义实现 班级。它需要用
virtual
关键字声明。当时 对于虚拟函数调用,决定选择哪个版本 函数定义(在基类或派生类中)的 运行时,具体取决于调用对象的类型(动态 绑定)

当一个函数被声明为虚函数时,它告诉编译器 将调用虚拟函数的对象的类型应为 仅在运行时确定。然后根据对象的类型, 函数调用应该绑定到函数定义和 应该调用适当的函数

为什么
构造函数不能是虚拟的?

当一个函数被声明为虚函数时,它告诉编译器 将调用函数的对象的类型应为 仅在运行时确定,然后调用适当的 基于对象类型的函数版本

如果构造函数被声明为虚拟的,它会告诉 编译器调用构造函数的对象类型应该是 在运行时确定。但对于构建一个对象,确切的 对象的类型应该在编译时而不是在运行时知道。 这就是构造函数不能是虚拟的原因


我希望SO成员纠正两个答案中的错误(如果有)。如果你能把答案重新写下来作为你的答案,而不是仅仅指出错误,我想这会对我和其他人有所帮助。

可能的重复请不要关闭这个问题。它恰巧与上一个问题的标题相同。但需求是不同的,我已经修改了问题的标题。它不是复制品。它恰好与前面的问题标题相同