C++ 内置或者复合类型 成员,必须自己定义构造函数来初始化……什么样的是【内置】 【复合类型】
发布日期:2021-05-07 00:51:29 浏览次数:26 分类:精选文章

本文共 698 字,大约阅读时间需要 2 分钟。

如题,什么是内置,或者复合类型??如果是 一般的float,int,或者一个结构体的引用,是不是不初始化会出问题??

新手求解。

内置类型(built-in):像int double char这种C++基本类型

复合类型(composition):一般指包含有成员数据的自定义类型.

内置类型不用手动初始化没事,C++会对他们默认初始化,
初始值可能是0(静态对象),可能是随机数(堆,栈对象)
引用类型或const的类型,不管是不是int还是结构体或者类,都必须要显式初始化.
并且编译器不会为具有这些类型的class,struct,合成.

追答

一样的,复合类型是否一定要显示初始化,得看复合类型里面的成员对象,它们是否都可以默认初始化.有一个不能默认初始化(比如有引用成员),复合类型就不可以默认初始化. 否则不一定就要显式初始化.比如你的类有个string成员,你对string默认初始化也没事. 初始化包括值初始化和默认初始化.当然是将所有成员都初始化好.因为你不这么做,编译器隐式地帮你"默认初始化"掉了.内置类型(0或者随机数), 复合类型(调用默认构造)  这里有个递归的含义在class B { int c ; string str} ;class A{    int i ;        B b ;} ;i 是内置类型, b 是复合类型.b能否默认初始化道理和A一样,递归进B里面.

追问

【1】也就是说 [内置类型] 成员变量在构造函数中 可以不 显式初始化。[复合类型] 成员变量必须显式初始化。&和const也是一样。【2】是不是 定义类时最好将成员全部初始化比较好?
上一篇:c++类
下一篇:C++中的默认初始化

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月05日 15时13分56秒