北京八维学校讨论C++中class与struct的区别

3个月前 (11-25 18:56)阅读3回复0
wly
wly
  • 管理员
  • 注册排名8
  • 经验值131205
  • 级别管理员
  • 主题26241
  • 回复0
楼主

  北京八维学校(的区别  很老的问题了。今天略微总结了下,有遗漏的处所和错误的处所还看各人填补。

  关于利用大括号初始化

  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
回帖

北京八维学校讨论C++中class与struct的区别 期待您的回复!

取消