新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 开发语言 > C++ > 正文:C++中class与struct的区别

C++中class与struct的区别

新客网 XKER.COM 2006-09-17 来源: 收藏本文
  很老的问题了。今天稍微总结了下,有遗漏的地方和错误的地方还望大家补充。

  关于使用大括号初始化

  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
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐