原文:为什么构造函数不能是虚函数(转)

来源:http: blog.sina.com.cn s blog f ri .html ,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。 ,从使用角度 虚函数主要用于在信息不全 ...

2019-09-12 17:00 0 455 推荐指数:

查看详情

构造函数为什么不能是函数

1. 从存储空间角度,函数对应一个指向vtable函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数 ...

Wed Aug 29 03:23:00 CST 2012 1 24273
构造函数为什么不能是函数

从存储空间角度看 函数相应一个指向vtable函数表的指针,这大家都知道,但是这个指向vtable的指针事实上是存储在对象的内存空间的。 问题出来了,假设构造函数的。就须要通过 vtable来调用。但是对象还没有实例化,也就是内存空间还没有,怎么找vtable ...

Sun Dec 20 02:50:00 CST 2015 0 3161
C++构造函数 & 拷贝构造函数 & 派生类的构造函数 & 继承的构造函数

构造函数 ,是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。(摘自百度百科构造函数)。 一、最基本的构造函数 ...

Fri Aug 15 04:56:00 CST 2014 0 2764
构造函数和析构函数可以是函数

: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
[C++基础]047_构造函数为什么不能是函数

本文的主题是构造函数不能是函数,首先这不需要你用脑子去记,因为当你写出来虚构造函数时,编译器是能检查出来的。本文的目的是为什么构造函数不能是函数。 首先,先看一段错误的代码,下面的代码是通不过编译阶段的。 为什么构造函数不能是函数呢?这里你需要知道一个概念,那就是函数 ...

Sat Dec 29 06:39:00 CST 2012 1 4825
C++构造函数中不能调用函数

构造函数中调用函数,并不会产生多态的效果,就跟普通函数一样。 c++ primer 第四版中497页15.4.5构造函数和析构中的函数讲到,如果在构造函数或析构函数中调用函数,则运行的是为构造函数或析构函数自身类型定义的版本。另外,必须通过基类类型的引用或指针进行函数调用才会发生多态 ...

Mon Aug 22 22:18:00 CST 2016 0 1774
C/C++ 构造函数不能是函数

1、如果构造函数函数,则它需要通过类的虚表来调用,而虚表的指针保存在对象中,没有调用构造函数,就没有对象。 ...

Tue Mar 17 04:26:00 CST 2020 0 1003
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM