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

posted @   代码改变世界11  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示