1. 程式人生 > 其它 >C++中空類編譯器不會產生以下哪個成員函式

C++中空類編譯器不會產生以下哪個成員函式

 

 

  • 當類為空時,編譯器會為這個類合成建構函式、解構函式、拷貝建構函式、賦值過載函式

     
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class Demo {   }; void func() {     Demo d1,d2,d5;//預設建構函式     Demo d3(d1);//預設拷貝建構函式     Demo d4 = d2;//預設拷貝建構函式     d5 = d4;//預設賦值過載       //區域性物件自動銷燬,呼叫預設解構函式 } int main() {     func();     
    return 0; }
  • 沒有私有建構函式,編譯器合成的預設函式都是public的,不是private,如果類中建構函式是私有的,就不能在類的外部建立物件(在內部還是可以建立,要在外部使用物件,就要用到靜態函式)

     
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 class Demo { public:     static Demo * getObject()//為了返回物件持久存在,返回堆上物件指標     {         Demo d;//類的內部還是可以建立物件
            return new Demo();     }     int geta()     {         return a;     }     void destroy()     {         delete this;     } private:     Demo() :a(0){}     int a; }; int main() {     Demo *p = Demo::getObject();     p->geta();     p->destroy();     return
    0; }

    所以,這題應該選C