C++中class与struct的区别

王朝c/c++·作者佚名  2008-06-01
宽屏版  字体: |||超大  

很老的问题了。今天稍微总结了下,有遗漏的地方和错误的地方还望大家补充。

关于使用大括号初始化

class和strUCt假如定义了构造函数的话,都不能用大括号进行初始化

假如没有定义构造函数,struct可以用大括号初始化。

假如没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。

关于默认访问权限

class中默认的成员访问权限是private的,而struct中则是public的。

关于继续方式

class继续默认是private继续,而struct继续默认是public继续。

且看如下代码(看看编译器给出的错误信息):

class T1

{

public:

void f()

{

cout<<"T1::f()"<<endl;

}

int x,y;

};

struct T2

{

int x;

void f(){cout<<"T2::f()"<<endl;}

};

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 <struct X>

void f(X x)

{

}

//出错信息:d:codecpptestcpptestcpptest.cpp(33) : error C2065: 'X' : undeclared identifier

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有