当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

C++中class与struct的区别

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

      关于使用大括号初始化

      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

相关内容
赞助商链接