gpt4 book ai didi

c++ - 使用大括号初始化类实例

转载 作者:行者123 更新时间:2023-11-30 01:10:17 25 4
gpt4 key购买 nike

我知道 C++ 中的结构和类非常相似,结构成员默认具有公共(public)访问权限,而类成员具有私有(private)访问权限等等。

但是,由于结构实例可以这样初始化:

struct MyStruct{
int a;
int b;
int c;
};

MyStruct s1 = {1, 2, 3}; //a=1, b=2, c=3
MyStruct s2 = {}; //a=0, b=0, c=0

对 C++ 中的类做同样的事情是否安全?例如:

class MyClass{
int a;
int b;
int c;
};

MyClass c1 = {1, 2, 3}; //a=1, b=2, c=3
MyClass c2 = {}; //a=0, b=0, c=0

问题:我知道我们可以使用构造函数,如果我像结构实例一样初始化类实例,是否有任何我应该注意的陷阱?如果我使用这种方法将数据成员初始化为其默认值(例如 0 代表 int,null 代表指针),这是一个安全的操作吗?

最佳答案

structclass 之间的唯一区别是默认访问规范:MyClass 有三个 private 成员和MyStruct 有三个 public 。因此,MyClass 不是聚合(其中一个要求是类没有私有(private)或 protected 非静态数据成员),这使得这段代码有问题形成:

MyClass c1 = {1, 2, 3};  // error

但是,如果您将所有成员设为 public,则 MyStruct 的初始化与 MyClass 的初始化没有区别.

关于c++ - 使用大括号初始化类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38272236/

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