gpt4 book ai didi

c++ - 使用常规构造函数进行聚合初始化

转载 作者:行者123 更新时间:2023-11-30 01:53:22 28 4
gpt4 key购买 nike

假设我有以下类(class):

class dog
{
public:
int age;
int bun;
};

现在这个声明

dog d = {12,5}

会将 age 初始化为 12,将 bun 初始化为 5

现在如果上面的类有一个无参数的构造函数,上面的语句初始化就不起作用了。如果有人能解释为什么会这样,我将不胜感激?

最佳答案

语法 dog d = { 12, 5 };聚合初始化 当类 dog 是聚合时。用户提供的构造函数可防止类成为聚合;比照。 C++11 8.5.1/1:

An aggregate is an array or a class (Clause 9) with no user-provided constructors (12.1), no brace-or-equal-initializers for non-static data members (9.2), no private or protected non-static data members (Clause 11), no base classes (Clause 10), and no virtual functions (10.3).

(我相信 C++ 的下一个修订版将允许聚合中的大括号或等于初始值设定项。)

关于c++ - 使用常规构造函数进行聚合初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23188173/

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