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

相关