使用memcpy复制类对象是正确的吗?

时间:2017-10-02 12:25:17

标签: c++

class SomeClass
{
public:
    int SomeFunc();
    virtual void DoSomeThing();
    void Copy(MyContainer* container)
    {
        //Is this line OK?
        //why not memcpy(container->data, this, sizeof(SomeClass) ?
        memcpy(&container->data, this, sizeof(SomeClass));
    }

    SomeClass* GetFromCopy(MyContainer* container)
    {
        //And this ?
        return (KLunaBase*)&container->pData;
    }

    void Test()
    {
        MyContainer* cont = NULL;
        container = malloc(sizeof(cont) - sizeof(cont->data) + size);
        Copy(cont);
    }

private:
    int a;
    int b;
    SomeOtherClass objA;
}

struct MyContainer
{
    const void* data;
}

我已经阅读了上面简化的一些历史代码,我无法理解的函数CopyGetFromCopy。 我知道POD类可以复制,但是如果类有虚函数和引用成员对象怎么办?

抱歉我的英语不好。

1 个答案:

答案 0 :(得分:2)

不,不要那样做。

提供适当的复制构造函数和赋值运算符,分别使用编译器生成的。