C++ 内置或者复合类型 成员,必须自己定义构造函数来初始化……什么样的是【内置】 【复合类型】

您所在的位置:网站首页 初始化的概念是指什么意思 C++ 内置或者复合类型 成员,必须自己定义构造函数来初始化……什么样的是【内置】 【复合类型】

C++ 内置或者复合类型 成员,必须自己定义构造函数来初始化……什么样的是【内置】 【复合类型】

2024-07-07 08:43| 来源: 网络整理| 查看: 265

如题,什么是内置,或者复合类型??如果是 一般的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】是不是 定义类时最好将成员全部初始化比较好?


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3