构造器从灰尘中构建对象.
这是我最近多次报道过的一个声明.
在初始化内置数据类型变量时,该变量也必须"由灰尘构建".那么,是否还有内置类型的构造函数?
此外,编译器如何以不同方式处理BUILT IN DATATYPE和USER DEFINED CLASS,同时为每个创建实例?我的意思是关于构造函数,析构函数等的细节.
关于堆栈溢出的这个查询是关于相同的,它有一些非常有趣的细节,最有趣的是Bjarne所说的......!
简单地说,根据C++标准:
12.1构造函数[class.ctor]
2.构造函数是用来初始化它的类的对象...
所以没有,内置数据类型(假设您正在讨论ints和floats之类的东西)没有构造函数,因为它们不是类类型.类类型是这样指定的:
9个班级[班级]
1.班级是一种类型.它的名称在其范围内成为类名(9.1).
class-name:
identifier
template-id
类说明符和详细类型说明符(7.1.5.3)用于创建类名.类的对象由(可能为空的)成员序列和基类对象组成.
class-specifier:
class-head { member-specification (opt) }
class-head:
class-key identifieropt base-clauseopt
class-key nested-name-specifier identifier base-clauseopt
class-key nested-name-specifieropt template-id base-clauseopt
class-key:
class
struct
union
由于内置类型不是这样声明的,因此它们不能是类类型.
那么如何创建内置类型的实例呢?将内置实例和类实例引入存在的一般过程称为初始化,在C++标准(8.5)中有一个巨大的8页部分,其中列出了令人难以忍受的细节.以下是您可以在8.5节中找到的一些规则.