将 class 的所有成员复制到当前对象
Copy all members of a class to current object
假设我有一个名为 BaseClass
的基 class 和一个继承自 BaseClass
的名为 Foo
的对象。我可以将 BaseClass
实例的所有成员复制到正在创建的当前对象而不是手动执行吗?
class BaseClass
{
int a;
int b;
int c;
const char *e;
};
class Foo : BaseClass
{
public:
Foo(BaseClass* bc, int x, const char *value)
{
// copy bc->a to this->a and bc->b to this->b
// and so on with all the members of BaseClass class
this->x = x;
this->s = value;
}
int x;
const char *s;
};
我可以这样做吗?
memcpy()
的另一种可能的解决方案,不确定它是否丑陋或无法工作,但假设成员按顺序分配,首先是 BaseClass
,即这个 class 在内存中变成了类似的东西:
struct
{
// members of BaseClass
int a;
int b;
int c;
const char *e;
// members of Foo
int x;
const char *s;
};
Foo
构造函数中的类似内容:
memcpy(this, &bc, sizeof(*bc));
应该将bc
的所有成员复制到当前对象中,对吧?这是危险的吗?
顺便说一句,我正在以 C 风格执行此操作。我不太会 C++。非常欢迎使用 C++ 的方式。
更改 Foo 构造函数的声明以包含基类的构造函数 class:
Foo(BaseClass* bc, int x, const char *value): BaseClass(*bc)
假设我有一个名为 BaseClass
的基 class 和一个继承自 BaseClass
的名为 Foo
的对象。我可以将 BaseClass
实例的所有成员复制到正在创建的当前对象而不是手动执行吗?
class BaseClass
{
int a;
int b;
int c;
const char *e;
};
class Foo : BaseClass
{
public:
Foo(BaseClass* bc, int x, const char *value)
{
// copy bc->a to this->a and bc->b to this->b
// and so on with all the members of BaseClass class
this->x = x;
this->s = value;
}
int x;
const char *s;
};
我可以这样做吗?
memcpy()
的另一种可能的解决方案,不确定它是否丑陋或无法工作,但假设成员按顺序分配,首先是 BaseClass
,即这个 class 在内存中变成了类似的东西:
struct
{
// members of BaseClass
int a;
int b;
int c;
const char *e;
// members of Foo
int x;
const char *s;
};
Foo
构造函数中的类似内容:
memcpy(this, &bc, sizeof(*bc));
应该将bc
的所有成员复制到当前对象中,对吧?这是危险的吗?
顺便说一句,我正在以 C 风格执行此操作。我不太会 C++。非常欢迎使用 C++ 的方式。
更改 Foo 构造函数的声明以包含基类的构造函数 class:
Foo(BaseClass* bc, int x, const char *value): BaseClass(*bc)