我从来没有听说过这是可能的,但希望可能会这样想.
对于具有比此更多成员变量的类:
class A
{
public:
SomeOtherClass* s;
int i;
int j;
A() {}
A(const A& soc): s(soc.s->Clone()), i(soc.i), j(soc.j) {}
};
Run Code Online (Sandbox Code Playgroud)
我总是要记住,如果我int k在类中添加另一个变量,我还必须在初始化列表中添加它k(soc.k),有时也在析构函数中添加它.我不得不多次添加/删除成员变量,忘记初始化列表中的复制并在调试时发现遗漏的确很烦人.
因此,我想知道是否有一个语法/逻辑,通过它我可以找到一个类的成员变量列表及其类型,以便我可以迭代它们并决定哪些需要在副本中复制ctor以及哪些需要被深深复制?
我不明白为什么C++的创建者不能包含这样的工具,因为除了虚拟成员之外,变量的内存位置也是连续的,它们的类型也是已知的.即使它们是extern或virtual,也会在运行时知道类型和大小.那不应该可能吗?