首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写一个复制构造函数到一个只有参数构造函数,没有默认构造函数的基类?

如何编写一个复制构造函数到一个只有参数构造函数,没有默认构造函数的基类?
EN

Stack Overflow用户
提问于 2020-03-16 13:40:44
回答 1查看 49关注 0票数 0

我正在尝试为Clib类写一个复制构造函数,这个类是从Cotherlib派生的,它没有默认的构造函数。我的原始代码包含一个深度复制操作,并使用另一个返回CLib对象的c函数,因此需要一个复制构造函数#include "stdafx.h“

代码语言:javascript
复制
    struct IMem
    {
        virtual  void function_f_1() = 0;
        virtual  void function_f_2() = 0;

    };

    class MyMem : public IMem
    {
    public:
        void function_f_1()
        {
        }
        void function_f_2()
        {
        }
    };
    class CDependentLib1
    {
    public:
        CDependentLib1()
        {
        }
        ~CDependentLib1()
        {
        }
    };
    class CDependentLib2
    {
    public:
        CDependentLib2()
        {
        }
        ~CDependentLib2()
        {
        }
    };

    class COtherLib
    {
    public:
        COtherLib(IMem &Mem, CDependentLib2 &objDependentLIb2)
        {
        }
        ~COtherLib()
        {
        }

    };
    class CLib : public COtherLib
    {
    public:
        CLib(IMem &mem):
            m_1(),
            m_2(),
            COtherLib(mem,m_2)  
        {
        }
        ~CLib()
        {
        }
        CLib(const CLib &ObjClib)// here i am getting error
        {
        }
    private :
        CDependentLib1 m_1;
        CDependentLib2 m_2;


    };
    int main()
    {

        MyMem ObjMem;
        CLib objLib(ObjMem);
        return 0;
    }

如何创建复制构造函数。我没有被授权编辑基类代码和添加默认构造函数

EN

回答 1

Stack Overflow用户

发布于 2020-03-16 13:50:14

是时候不要迷惑了,买一本好的C++书吧。

如果要覆盖默认的复制构造函数,则必须从原始构造函数中复制元素,以便自己复制。除非您计划在复制ctor中实际执行某些操作,否则要么根本不放置复制ctor,要么只是想要一个复制ctor:

代码语言:javascript
复制
class A 
{
    int i;

public:
    A(int a): i(a) {}
    A(const A &) = default;
};

尽管只有一个拷贝ctor是一种糟糕的做法。最好遵循rule of 3或5的规则。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60700838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档