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;
}
我已经阅读了上面简化的一些历史代码,我无法理解的函数Copy
和GetFromCopy
。
我知道POD类可以复制,但是如果类有虚函数和引用成员对象怎么办?
答案 0 :(得分:2)
提供适当的复制构造函数和赋值运算符,分别使用编译器生成的。