c++ - C++中哪些情况会用到clone,如何使用?

标签 c++

虚拟克隆和克隆有什么区别? 我找到下面的例子,它克隆派生到基础,它是做什么用的?

class Base{
public:
    virtual Base* clone() {return new Base(*this);}
    int value;
    virtual void printme()
    {
        printf("love mandy %d\n", value);
    }
};
class Derived : public Base
{
public:
    Base* clone() {return new Derived(*this);}
    virtual void printme()
    {
        printf("derived love mandy %d\n", value);
    }
};

Derived der;
    der.value = 3;

    Base* bas = der.clone();
    bas->printme();

最佳答案

考虑一下:

Base * b = get_a_base_object_somehow();

//现在,b 可能是 Base 或 Derived 类型,或从 Base 派生的其他类型

Base * c = b->clone();

//现在,c 将与 b 的类型相同,并且您可以在不知道其类型的情况下复制它。这就是克隆方法的用武之地。

关于c++ - C++中哪些情况会用到clone,如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7708110/

相关文章:

c++ - 通过mexfunction从C++将int类型的N个 vector 返回到matlab?

C++ 放置 new、无效读取和 InvalidInvalid free()/delete/delete[]/realloc()

c++ - 这被认为是递归吗?

c++ - ReadDirectoryChangesW 拒绝 CreateIoCompletionPort 接受的 HANDLE

C++ - 正在释放的指针未分配

c++ - 通过两个类时出现奇怪的输出数据

c++ - 是否有任何标准技术、机制和工具用于生成异常以与测试代码一起使用以彻底测试 C++?

c++ - 如何在屏幕上打印内容

c++ - 字符串映射和指向模板函数的指针

c++ - 在 C++ 中复制相似的类