北京八维学校(的区别 很老的问题了。今天略微总结了下,有遗漏的处所和错误的处所还看各人填补。
关于利用大括号初始化
class和struct假设定义了构造函数的话,都不克不及用大括号停止初始化
假设没有定义构造函数,struct能够用大括号初始化。
假设没有定义构造函数,且所有成员变量满是public的话,能够用大括号初始化。
关于默认拜候权限
class中默认的成员拜候权限是private的,而struct中则是public的。
关于继续体例
class继续默认是private继续,而struct继续默认是public继续。
且看如下代码(看看编译器给出的错误信息):
class T1
public:
void f()
cout"T1::f()"
int x,y;
struct T2
int x;
void f(){cout"T2::f()"
struct TT1 : T1
class TT2 : T2
int main()
TT1 t1;
TT2 t2;
t1.f();
t2.f();
关于模版
在模版中,类型参数前面能够利用class或typename,假设利用struct,则含义差别,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是类型参数。
template
void f(X x)
//出错信息:d:codecpptestcpptestcpptest.cpp(33) : error C2065: 'X' : undeclared identifier
0