和函数的默认访问权限为public,而class 的为private。
在C++语言中struct 具有了“类” 的功能,其与关键字class 的区别在于struct 中成员变量和函数的默认访问权限为public,而class 的为private。
例如,定义struct 类和class 类:
struct structA
{
char a;
…
}
class classB
{
char a;
…
}
则:
structA a;
a.a = 'a'; //访问public 成员,合法
classB b;
b.a = 'a'; //访问private 成员,不合法
许多文献写到这里就认为已经给出了C++中struct 和class 的全部区别,实则不然,另外一点需要注意的是:
C++中的struct 保持了对C 中struct 的全面兼容(这符合C++的初衷——“a better c”),因而,下面的操作是合法的:
//定义struct
struct structA
{
char a;
char b;
int c;
};
structA a = {'a' , 'a' ,1}; // 定义时直接赋初值
即struct 可以在定义的时候直接以{ }对其成员变量赋初值,而class 则不能,在经典书目《thinking C++ 2nd edition》中作者对此点进行了强调。