社区
C语言
帖子详情
关于调用默认构造函数
yirengirl
2001-09-05 11:02:04
我写了一个简单的类Ctest,类中有一个成员变量int a,并没有定义构造函数与析构函数。
定义一个类的对象
Ctest str;
然后打印出str.a
这是一个非常简单的类,按理说系统将自动调用默认构造函数把str.a初始化为0。可我的打印结果却为:-858993460
我的编译环境是VC++6.0,为什么?
...全文
189
9
打赏
收藏
关于调用默认构造函数
我写了一个简单的类Ctest,类中有一个成员变量int a,并没有定义构造函数与析构函数。 定义一个类的对象 Ctest str; 然后打印出str.a 这是一个非常简单的类,按理说系统将自动调用默认构造函数把str.a初始化为0。可我的打印结果却为:-858993460 我的编译环境是VC++6.0,为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
magicblue
2001-09-06
打赏
举报
回复
有些编译器的默认构造函数是会给数据成员置0的
cococut
2001-09-06
打赏
举报
回复
1,缺省的构造函数不会给类的数据成员赋值;
2,如果定义自己的构造函数,类中就不会生成缺省的构造函数;
3,重载构造函数的时候,给参数赋默认值以后,要注意产生二义性;
比如:
class A
{
A();
A(int mm = 0);
}
如果:
A a;
则产生二义性,不知道该调用那个构造函数,其他的调用过程向(知秋一叶)所说!
rockhard
2001-09-06
打赏
举报
回复
如果你没有显示的写一个构造函数,就如qqchen79(知秋一叶)所说的那三种情形下编译器才会为你产生一个默认的构造函数,否则是不会有默认的构造函数。象你所说的那个类不会产生默认的构造函数,更不要谈什么初始化了。
fsb_12345
2001-09-06
打赏
举报
回复
up
San_Daniel
2001-09-06
打赏
举报
回复
接qqchen79(知秋一叶)
4.当类有一个或多个virtual base class时,编译器会为你生成默认构造函数,具体工作视编译器不同
magicblue
2001-09-06
打赏
举报
回复
你不是都说了吗,那是标准,各个厂家的编译器会100%遵循标准吗?
liu_feng_fly
2001-09-06
打赏
举报
回复
c++语法规定,只有静态的成员变量编译器才会负责初始化为0的责任!!
qqchen79
2001-09-05
打赏
举报
回复
缺省构造函数不会替你初始化变量的!
她的工作主要有三个:
1. 如果你得类是从其它类继承而来,它有必要调用父类的构造函数。
2. 如果你得类中有复杂类成员变量(不包括build-in类型如int),那么它需要调用这些成员变量的构造函数。
3. 如果你得类有virtual函数,它需要填写vptr指向相应的vtable。
至于不初始化的原因,主要是出于性能的考虑,初始化变量需要时间,而且,程序员应该比编译器更清楚什么时候应该初始化什么变量。
Fantasia
2001-09-05
打赏
举报
回复
谁告诉你的?
构造函数
调用
默认构造函数
_显式无参数构造函数与
默认构造函数
构造函数
调用
默认构造函数
大多数不熟悉Java的开发人员都会Swift了解到,如果他们没有指定至少一个显式构造函数,则会为Java类隐式创建一个“
默认构造函数
”( 由javac进行创建)。 Java语言规范的 8.8.9节简要...
C++中类的
默认构造函数
调用
的时机
当不使用任何初始值定义一个类的非静态变量时,会
调用
该类的
默认构造函数
。 Aa; 此时,会
调用
类A的
默认构造函数
。在《C++中类的合成
默认构造函数
2-1》https://blog.csdn.net/hou09tian/article/details/108072603...
C++
默认构造函数
默认构造函数
什么时候被
调用
? 编译器在什么情况下会生成
默认构造函数
? 一. 什么是
默认构造函数
? 我们一般会认为
默认构造函数
就是编译器自动生成的那个构造函数,其实这种理解不全面。 准确的说,默认构造...
【C++】构造函数
调用
规则 (
默认构造函数
| 默认无参构造函数 | 默认拷贝构造函数 | 构造函数
调用
规则说明 )
一、
默认构造函数
1、默认无参构造函数 2、默认拷贝构造函数 二、构造函数
调用
规则 1、构造函数规则说明 2、代码示例 - 只定义拷贝构造函数 3、代码示例 - 只定义有参构造函数
C++:派生类的
默认构造函数
和拷贝构造函数
调用
基类构造函数的机制(含程序验证)
1、如果基类定义了不带参数的
默认构造函数
,则编译器为派生类自动生成的
默认构造函数
会
调用
基类的
默认构造函数
。 2、如果基类定义了拷贝构造函数,则编译器为派生类自动生成的拷贝构造函数同样会
调用
基类的拷贝...
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章