CDerived(int a,int b):CBase(b){};

解决方案 »

  1.   

    CDerived(int a,int b):CBase(b);这是初始化列表调用父类构造函数初始化b,b一般是从父类继承过来的
    CDerived(int a,int b):x(b);这是在初始化列表初始化当前类成员,
    这样有问题吗??初始化列表没见过吗??任何一本C++语法的书讲继承的地方都有讲
      

  2.   

    同意楼上的
    对于变量初始化(第二种情况),在非必要时,我建议不要使用这种方法来初始化变量,毕竟对理解会造成一定的困难,没必要为了表现自己很Nx就要这样写,下列的写法清楚,人人都容易理解:
    CDerived(int b)//这是在装逼还是真的有用处?反正我在书上是没见过这种写法. 
      { 
        x = b;
      } 但如果是要初始化类中的const成员,则只有楼主说的那样了:
    CDerived(int b):x(b)//这是在装逼还是真的有用处?反正我在书上是没见过这种写法. 
      { 
      } // 这里的x是类的一个const成员实际上,在类中声音为const的成员,在编译时,并不是总能通过的,在使用这些const成员时,编译器有时不认为它是一个const成员
      

  3.   

    class CDerived:public CBase 

    public: 
      int x; 
      CDerived(int a,int b):x(b);//这样写?我把书翻了N遍,也没见有这种写法呀.什么原理呢?我还经常看到有的人定义一个空构造函数都加个x(b),如下:   CDerived(int b):x(b)//这是在装逼还是真的有用处?反正我在书上是没见过这种写法. 
      {   } } 
    我今天开眼了。我也是第1次见这样的构造初始化.CDerived(int a,int b):CBase(b)
    {
    x=b;
    }我觉得这样才好,程序给人家读的。并不是自己读明白就ok了。弄的全天下就自己看明白自己的程序,没有什么好处.坏处到是不少
      

  4.   

    构造函数中的变量初始化都看不懂,还好意思说读明白?建议好好学学C++基础,要深入一些看看《Effective C++》。
      

  5.   


    同意
    x(b) 只调用拷贝构造函数
    x=b  调用构造函数,赋值操作符
      

  6.   

    这种方式很常见吧,这不就是初始化成员列表的方式赋初值吗,在纯c++程序里给const成员变量赋值就必须采用这种方式,而且这在MFC程序里很常见的
      

  7.   

    这样写法不好??我很怀疑你有没有看完一本C++最初级的书这只能算是赋值,严格来说不能叫初始化
    CDerived(int a,int b):CBase(b)
    {
    x=b;
    }这是初始化,实际上比上面那种写法好,效率高
    CDerived(int a,int b):x(b);
      

  8.   


    也不是任何一本讲C++的书都讲了,反正我大学教材上是没讲,<<C++宝典>>上也没看到,后来在<<C++ primer>>上才看到介绍.不理解不要紧,能问就好,<<C++ primer>>是程序员必备呀.
      

  9.   

    小弟刚刚接触MFC 但是对于c++还是比较熟悉的。这个写法很正常 是在用初始化列表初始化数据成员。 很正常的。MFC里面常见与否我不知道。通常用于初始化 CONST成员。