2016-11-26 41 views
0

我试图禁用或者说与线Card(const Card&) = delete;重载拷贝构造函数与删除,然后调用C++中的子类

删除父类卡的拷贝构造函数。当我在主调用Quartz* qu = new Quartz();的默认构造函数我得到的错误,默认的构造函数被删除?我觉得这很令人困惑,因为我不认为我在Card中定义了一个默认构造函数,而是复制构造函数的重载。任何解释或解决方法,这非常赞赏。

class Card { 
public: 

    Card(const Card&) = delete; 

}; 

class Quartz : public Card { 
public: 
    Quartz() = default; 


}; 

int main() { 

    Quartz* qu = new Quartz(); 
} 

回答

1

如果该类没有其他构造函数,则默认构造函数仅被隐式定义。既然你定义了一个拷贝构造函数,你现在也需要明确地定义一个默认的构造函数。