打印本文 打印本文  关闭窗口 关闭窗口  
C++中class与struct的区别
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:38:57  文章录入:杜斌  责任编辑:杜斌

  关于使用大括号初始化

  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
打印本文 打印本文  关闭窗口 关闭窗口