原文:构造函数为什么不能声明为虚函数?析构函数为什么要声明为虚函数

多态中的虚函数表是在运行时创建的还是编译时创建的 答:虚函数表在编译的时候就确定了,而类对象的虚函数指针vptr是在运行阶段确定的,这是实现多态的关键 类的函数的调用并不是在编译时就确定的,而是在运行时才确定的,由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以声明为虚函数。虚函数和虚函数表是两个不同的东西,虚函数的调用是在运行时才确定的,虚函数表是在编译时就已经确定的了 ...

2018-10-31 12:07 0 1311 推荐指数:

查看详情

为什么析构函数声明为函数

析构函数的作用与构造函数正好相反,是在对象的生命期结束时,释放系统为对象所分配的空间,即要撤消一个对象。 用对象指针来调用一个函数,有以下两种情况: 如果是函数,会调用派生类中的版本。(在有派生类的情况下) 如果是非虚函数,会调用指针所指类型的实现版本。 析构函数 ...

Mon Dec 02 06:11:00 CST 2013 0 9847
(C++)浅谈多态基类析构函数声明为函数

主要内容: 1、C++类继承中的构造函数析构函数 2、C++多态性中的静态绑定和动态绑定 3、C++多态性中析构函数声明为函数 1、C++类继承中的构造函数析构函数 在C++的类继承中, 建立对象时,首先调用基类的构造函数,然后在调用下一个派生类的构造函数,依次类推 ...

Mon Jun 15 06:06:00 CST 2015 1 4298
何时将析构函数声明为私有?

参考:https://blog.csdn.net/HITXuQin/article/details/12850755 当我们将析构函数声明为私有时,就意味着析构函数只能在类域中被调用,无法被外界(包括自己的对象)调用。 表现为: 1. 禁止用户对此类型的变量进行定义,即禁止在栈内存空间内创建 ...

Thu Aug 01 00:46:00 CST 2019 0 738
构造函数析构函数声明为私有和保护的,那么对象如何创建

已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙说明,关于构造析构函数声明为私有和保护时的用法??? 提出这个问题,说明你已经对c++有所思考了。 从语法上来讲,一个函数声明为protected或者private,那么这个函数就不能从“外部”直接被调用 ...

Tue Dec 10 05:35:00 CST 2019 0 288
C++中不能声明为函数的有哪些函数

常见的不不能声明为函数的有:普通函数(非成员函数);静态成员函数;内联成员函数构造函数;友元函数。 1.为什么C++不支持普通函数函数? 普通函数(非成员函数)只能被overload,不能被override,声明为函数也没有什么意思,因此编译器会在编译时邦定函数。 多态的运行期行为 ...

Mon Apr 25 03:33:00 CST 2016 0 1843
C++ 中不能声明为函数函数有哪些?

目录 普通函数 构造函数 内联成员函数 静态成员函数 友元函数 普通函数 普通函数(非成员函数)只能被overload,不能被override,而且编译器会在编译时绑定函数。 多态的运行期行为体现在函数上,函数通过继承方式来体现出多态 ...

Tue Jun 11 21:14:00 CST 2019 0 1346
构造函数析构函数可以是函数

转:https://www.cnblogs.com/ktao/p/7563289.html 1. 为什么构造函数不能为函数函数的调用需要函数表指针,而该指针存放在对象的内存空间中;若构造函数声明为函数,那么由于对象还未创建,还没有内存空间,更没有函数表地址用来调用 ...

Fri May 15 02:15:00 CST 2020 0 4230
构造函数析构函数能是函数吗?

1. 为什么构造函数不能为函数函数的调用需要函数表指针,而该指针存放在对象的内容空间中;若构造函数声明为函数,那么由于对象还未创建,还没有内存空间,更没有函数表地址用来调用函数——构造函数了。 2. 为什么析构函数可以为函数,如果不设为函数 ...

Thu Sep 21 03:42:00 CST 2017 0 1523
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM