构造函数可以是虚函数吗_构造函数不能定义为虚函数

admin 12 0

哪些函数不能为虚函数

1、常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。这个原因很简单,主要是从语义上考虑,所以不支持。因为构造函数本来就是为了明确初始化对象成员才产生的,然而virtual function主要是为了再不完全了解细节的情况下也能正确处理对象。

2、构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。

3、构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:解释一:所谓虚函数就是多态情况下只执行一个。而从继承的概念来讲,总是要先构造父类对象,然后才能是子类对象。

在C++中,能否声明虚构函数?为什么?能否声明虚析构函数?为什么_百度知...

原因如下:在C++-中不能声明虚构造函数,多态是不同的对象对同一消息有不同的行为特性,虚函数作为运行过程中多态的基础,主要是针对对象的,面构造函数是在对盘产生之前运行的,因此虚构造函数是没有童义的。

如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。所以基本的一条是:无故的声明虚析构函数和永远不去声明一样是错误的。

构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。

什么情况下,类的析构函数应该声明为虚函数?为什么?

1、如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。所以基本的一条是:无故的声明虚析构函数和永远不去声明一样是错误的。

2、析构函数通常被设计为虚函数,其核心原因是防止内存泄漏问题的发生。当基类指针指向派生类对象时,如果没有将析构函数声明为虚函数,那么在释放对象时,编译器会根据指针类型执行基类的析构函数,导致派生类特有的数据成员可能无法被正确释放,从而造成内存泄漏。

3、析构函数一般被定义为虚函数,以降低内存泄漏的可能性。例如,假设我们有一个基类的指针指向派生类的对象,在使用完毕并准备销毁时,若基类的析构函数未被定义为虚函数,编译器将根据指针类型判断对象类型为基类。

构造、析构函数可否为virtual

1、构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:解释一:所谓虚函数就是多态情况下只执行一个。而从继承的概念来讲,总是要先构造父类对象,然后才能是子类对象。

2、c++的构造函数不能用virtual修饰。因为构造函数用来创建一个新的对象,而虚函数的运行是建立在对象的基础上,在构造函数执行时,对象尚未形成,所以不能将构造函数定义为虚函数。通常析构函数才会用virtual修饰。C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。

3、友元函数 构造函数 static静态函数 不能用virtual关键字修饰;普通成员函数 和析构函数 可以用virtual关键字修饰。

4、构造函数不能是虚函数,而析构函数在某些情况下必须为虚函数(比如你想让你类能够被继承,那么这个类的析构函数最好是虚的,继承一个析构函数不是虚的类是有风险的),值得补充的是,当基类的函数是虚函数,子类的重载的函数也是虚的,及时不加virtual关键字也是虚的。

5、③构造函数不需要是虚函数,也不允许是虚函数,因为创建一个对象时我们总是要明确指定对象的类型,尽管我们可能通过实验室的基类的指针或引用去访问它。但析构却不一定,我们往往通过基类的指针来销毁对象。这时候如果析构函数不是虚函数,就不能正确识别对象类型从而不能正确调用析构函数。

下列关于构造函数与析构函数的叙述中错误的是()。

【答案】:D D。【解析】构造函数的主要作用是对数据成员初始化。构造函数不能声明为虚函数,这是因为在执行构造函数时类对象还未完成建立过程,当然谈不上函数与类对象的关联。

【答案】:D 在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。

下列关于派生类构造函数和析构函数的说法中,错误的是( )。

只能由本类中的函数使用,不能被外面的程序所访问。 B. 可以由本类中的函数使用,也可以被外面的程序所访问。 C. 只能由本类和派生类中的函数使用。 D. 可以在主函数中使用。

A. 析构函数B. 数据成员C. 构造函数D. 静态成员函数 1下列关于C++函数的叙述中,正确的是(C )A. 每个函数至少要具有一个参数。B. 每个函数都必须返回一个值。C. 函数在被调用之前必须先声明。D. 函数不能自己调用自己。

构造函数的功能是对对象进行初始化,即对数据成员进行初始化。

标签: #构造函数可以是虚函数吗