原始类型在C++中也有构造函数吗?

Des*_*tor 6 c++ constructor primitive-types built-in-types

我读过Bjarne Stroustrup博士的书"C++编程语言"第3版内置类型在第10.4.2节中也有C++中的构造函数.

但是接下来的链接说POD类型不能有构造函数:

http://www.parashift.com/c++-faq-lite/pod-types.html

这是真的吗?原始类型在C++中也有构造函数吗?

gex*_*ide 8

Bjarne的意思是你可以编写int(56)甚至int()构造一个整数.链接的含义是,如果struct/class没有声明构造函数,它只是一个POD.所以Bjarne讨论了原始的非结构类型和关于结构/类的链接讨论,因此两个源可以共存而不会相互矛盾.

以下是链接定义的一部分:

POD类型的非静态数据成员必须是公共的,并且可以是任何这些类型

当然,这只能用于结构.一个int没有"数据成员".因此,尽管链接从未直接提及它,但它仅涉及结构和类.

  • @aruisdante,不是这样.仅禁止虚拟功能.FWIW,我在谈论C++ 11,但C++ 03文本是*POD-struct是一个聚合类,没有非POD-struct类型的非静态数据成员,非POD-union (或此类型的数组)或引用,并且没有用户定义的副本赋值运算符,也没有用户定义的析构函数*,其中*聚合是一个数组或类(第9节),没有用户声明的构造函数(12.1) ,没有私有或受保护的非静态数据成员(第11节),没有基类(第10节),也没有虚函数(10.3).* (3认同)