1.
struct定义一个结构体成员变量和成员函数的默认访问权限为public。
class定义一个结构体成员变量和成员函数的默认访问权限为private。
struct更适合看成是一个数据结构的实现体。
class更适合看成是一个对象的实现体。
class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。
在cpp中对两者的初始化不同,struct类型可以以test a = {...}形式初始化,class则不行。
struct test
{
int s;
int v;
};
class test1
{
int s;
int v;
};
int main()
{
test a = {10,20};
a.s = 10;a.v = 20;
test1 a = {10,20};//error 不允许使用{...}形式对test1类型的对象进行初始化
return 0;
}
那为什么我们在上面仅仅将struct改成class,{}就不能用了呢?
其实问题恰巧是我们之前所讲的——访问控制!你看看,我们忘记了什么?对,将struct改成class的时候,访问控制由public变为 private了,那当然就不能用{}来赋初值了。加上一个public,你会发现,class也是能用{}的,和struct毫无区别!!!
2.
struct空结构体占用的内存问题