gpt4 book ai didi

C++ 重载 virtual = 运算符

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:43 25 4
gpt4 key购买 nike

这是我的问题的代码:


class ICommon
{
public:
virtual ICommon& operator=(const ICommon & p)const=0;
};

class CSpecial : public ICommon
{
public:
CSpecial& operator=(const CSpecial & cs)const
{
//custom operations
return *this;
}
};
CSpecial obj;

基本上:我希望接口(interface) ICommon 强制其后代实现 = 运算符,但不希望在实现中有任何类型转换。编译器说“无法实例化抽象类。
任何帮助/建议将不胜感激。

最佳答案

那是因为CSpecial中函数的签名与你在抽象基类中定义的纯虚函数不同。您可以使用 virtual copy constructor做复制。基本上,您在基类中定义一个纯虚函数 ICommon* clone() = 0,并在每个派生类中实现它。调用此函数时,将创建调用它的对象的拷贝。

关于C++ 重载 virtual = 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2862875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com