use*_*460 1 c++ struct initialization class
我知道C++中的struct和class非常相似,并且struct成员默认具有公共访问权限,而类成员具有私有访问权等等.等等.
但是,由于struct实例可以像这样初始化:
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
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
问题:我知道我们可以使用构造函数,如果我初始化像struct实例这样的类实例,是否有任何陷阱?如果我使用这种方法将数据成员初始化为其默认值(例如0表示int,null表示指针),这是一个安全的操作吗?
struct和之间的唯一区别class是默认访问规范:MyClass有三个private成员,MyStruct有三个成员public.其结果,MyClass是不聚集(的要求之一是,一个类没有私人或受保护的非静态数据成员),这使得该代码非法的构造:
MyClass c1 = {1, 2, 3}; // error
Run Code Online (Sandbox Code Playgroud)
但有你的初始化没有什么区别MyStruct,什么你的初始化MyClass就已经拥有了你所做的所有成员public.
| 归档时间: |
|
| 查看次数: |
825 次 |
| 最近记录: |