gpt4 book ai didi

c++ - C++ 中的内置数据类型与用户定义的数据类型

转载 作者:太空狗 更新时间:2023-10-29 23:54:12 26 4
gpt4 key购买 nike

Constructors build objects from dust.

这是我最近多次遇到的声明。

在初始化内置数据类型变量时,该变量也必须“从尘土中构建”。那么,是否还有用于内置类型的构造函数?

此外,编译器在为每个创建实例时如何区别对待内置数据类型和用户定义类?我的意思是有关构造函数、析构函数等的详细信息。

这个关于堆栈溢出的查询是关于相同的,它有一些非常有趣的细节,最有趣的是 Bjarne 所说的......!

Do built-in types have default constructors?

最佳答案

简单来说,按照C++标准:

12.1 Constructors [class.ctor]

2. A constructor is used to initialize objects of its class type...

所以不,内置数据类型(假设您正在谈论诸如 intfloat 之类的东西)没有构造函数,因为它们不是类类型。类类型指定如下:

9 Classes [class]

1. A class is a type. Its name becomes a class-name (9.1) within its scope.

        class-name:                identifier                template-id

Class-specifiers and elaborated-type-specifiers (7.1.5.3) are used to make class-names. An object of a class consists of a (possibly empty) sequence of members and base class objects.

        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 页的巨大部分,其中列出了关于它的极其详细的信息。 Here's some of the rules您可以在第 8.5 节中找到。

关于c++ - C++ 中的内置数据类型与用户定义的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7371020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com