POD 的 C++11 中的构造函数要求 [重复]

Posted

技术标签:

【中文标题】POD 的 C++11 中的构造函数要求 [重复]【英文标题】:Constructor requirements in C++11 for POD [duplicate] 【发布时间】:2012-08-27 01:26:08 【问题描述】:

可能重复:What are Aggregates and PODs and how/why are they special?

C++11 中的 struct 需要什么样的构造函数才能将这个 struct 保持为 POD?

只接受初始化列表?或者可能没有任何限制?

【问题讨论】:

【参考方案1】:

你需要一个默认的默认构造函数,这样它就很简单了:

struct pot

    constexpr pot() noexcept = default;

    pot(int a, float b) : x(a), y(b)  

    int x;
    float y;
;

constexprnoexcept 是可选的,但我们也可以。

用法:

pot p;         // OK
pot q(1, 1.5); // also OK

【讨论】:

为什么在这里使用 constexpr 作为构造函数? @NikitaTrophimov:您不妨提供最有力的保证,不是吗?这样你就可以在常量表达式中使用类型。

以上是关于POD 的 C++11 中的构造函数要求 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在Java中的包级别打印构造函数[重复]

[C++11]委托构造函数

C++:TrivialStandard-Layout 和 POD

C ++中的构造函数初始化[重复]

c ++的构造函数和析构函数汇编[重复]

c ++调用非默认构造函数作为成员[重复]