首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制constructor+assignment运算符

复制constructor+assignment运算符
EN

Stack Overflow用户
提问于 2014-01-17 20:43:42
回答 2查看 502关注 0票数 0

这是我代码的一部分...

//samlple.h........

代码语言:javascript
复制
class Manager{            
public:                                                
    Manager(cmd::Processor *cp);                    
    virtual ~Manager(void);                                
protected:                                       
    cmd::Processor  *m_Processor;                                       

};         

//samlple.cpp........

代码语言:javascript
复制
//Default constructor                  

Manager::Manager(                
    cmd::Processor  *cp           
) : m_commandProcessor(cp)                
    {            
    g_MgrCommand = new MgrCommand(this);                
}        

运行此命令后,我收到以下警告:

Sample.cpp(97):Info 1732:没有赋值运算符的类“Manager”的构造函数中有新内容........

我是c++编码的新手。

您能告诉我如何为我的类编写复制构造函数和赋值运算符来删除此警告吗

EN

回答 2

Stack Overflow用户

发布于 2014-01-17 20:48:53

您可以声明一个operator=成员函数:

代码语言:javascript
复制
Manager& Manager::operator=(const Manager&) {
    // ...
    return (*this);
}

当然,函数的第一个参数可以是您想要的任何值。

票数 0
EN

Stack Overflow用户

发布于 2014-01-17 20:50:33

您不必实现复制c‘to /赋值。

关键是,除非您自己实现它们,否则编译器会通过成员复制自动实现它们。在您的特定情况下,这个自动生成的代码将是不正确的,因为您将有几个对象指向相同的已分配MgrCommand

您应该正确地实现C‘’tor/assignment运算符(可能是通过在每个对象中分配一个单独的MgrCommand实例),或者禁用它们。

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

https://stackoverflow.com/questions/21186334

复制
相关文章

相似问题

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