![]() |
1
11
我将向a添加一个复制构造函数,然后向B添加一个新的构造函数,该构造函数接受a的一个实例并将其传递给基的复制构造函数。 |
![]() |
2
10
在语言中没有自动实现这一点的方法。。。 一个选项是向类B添加一个构造函数,该构造函数将类a作为参数。
在这种情况下,构造函数可以根据需要复制相关数据。 |
![]() |
3
5
优点: 可维护性。无需更改复制构造函数或类似内容,也无需添加或删除属性。 缺点 :性能。反射很慢。我们仍然在讨论平均大小的类的毫秒数。 下面是一个基于反射的浅层复制实现,使用扩展方法支持复制到子类:
单元测试:
|
![]() |
4
4
|
![]() |
5
1
在B中创建一个允许传入a类型对象的ctor,然后复制a字段并根据需要设置B字段。 |
![]() |
6
0
您可以在类B上创建一个Convert方法,该方法接受基类。
您还可以在ClassA的对象中为ClassB创建一个构造函数。 |
![]() |
7
0
不,你不能那样做。实现这一点的一种方法是在类B上添加一个接受类型B参数的构造函数,然后手动添加数据。 所以你可以有这样的东西:
|
![]() |
8
0
在基类中,在下面添加CreateObject虚拟方法。。。
然后假设您想从超级类创建一个真实的子类对象,只需调用
那就够了! |
![]() |
9
0
虽然没有人提出这一点(诚然,这并不适用于所有人),但应该说,如果您可以选择从一开始就创建对象b,那么就这样做,而不是创建对象a然后复制到对象b。例如,假设您在同一个函数中,并拥有以下代码:
不要担心最后一个注释步骤,只需从b开始设置值:
请不要因为你认为上面的话很愚蠢而投我的反对票!我遇到过许多程序员,他们太专注于自己的代码,以至于没有意识到一个更简单的解决方案就在眼前 |
![]() |
10
0
下面是一种使用构造函数的方法:
|
![]() |
ZeroZ30o · std::包含原子的类的向量 7 年前 |
![]() |
physlexic · 获取文件夹中文件的百分比 7 年前 |
![]() |
Magix · 复制从抽象类派生的对象 7 年前 |
![]() |
physlexic · 在目录之间随机移动多个文件 7 年前 |
![]() |
pindare · 将文件从层次结构递归复制到单个平面文件夹 7 年前 |
![]() |
KayV · 将特定文件从目录和子目录复制到mac中的目标文件夹中 7 年前 |