由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 能否通过父类指针来复制子类对象?
相关主题
C++子类中调用父类指针的问题MPI不同进程之间传递指针的一个陷阱
子类的assignment operator 怎么访问父类的private member内存泄露了吗?
子类的copy constructor怎么写包含指针的类和vector的问题
A C++ runtime type casting question请问c++里empty class的问题
BigEndian和LittleEndian的设计c++ dynamic cast
python不支持多态请教几个C++问题
不如各位高手挑个专题讲讲C++11吧Synthesized Constructor到底什么意思?
Question about type conversion (转载)[合集] 又学了一招
相关话题的讨论汇总
话题: pb1话题: 父类话题: pb2话题: 子类话题: java
进入Programming版参与讨论
1 (共1页)
y**b
发帖数: 10166
1
父类B,子类D,用父类指针进行操作实现多态B *pB1 = new D;
现在想复制一个子类对象来做其它用途,B *PB2 = new B(*PB1),
但是这样得到的PB2显然被截短了?
若改成new D(*PB1)则编译都通不过。
p***o
发帖数: 1252
2
父类要加一个虚函数clone

【在 y**b 的大作中提到】
: 父类B,子类D,用父类指针进行操作实现多态B *pB1 = new D;
: 现在想复制一个子类对象来做其它用途,B *PB2 = new B(*PB1),
: 但是这样得到的PB2显然被截短了?
: 若改成new D(*PB1)则编译都通不过。

y**b
发帖数: 10166
3
多谢!
c*******1
发帖数: 460
4
定义一个COPY CONSTRUCTOR.

【在 y**b 的大作中提到】
: 父类B,子类D,用父类指针进行操作实现多态B *pB1 = new D;
: 现在想复制一个子类对象来做其它用途,B *PB2 = new B(*PB1),
: 但是这样得到的PB2显然被截短了?
: 若改成new D(*PB1)则编译都通不过。

h**********c
发帖数: 4120
5
这在qt里用mirror来解决的吧,在java里就是reflection. you can check an object
reference's rock bottom class name.
y**b
发帖数: 10166
6
我用的C++,按pptwo的提示很快解决了。
java里面有更好的办法?
p***o
发帖数: 1252
7
java自带clone。

【在 y**b 的大作中提到】
: 我用的C++,按pptwo的提示很快解决了。
: java里面有更好的办法?

z*y
发帖数: 1311
8
Can you just cast?
B *pB2 = new D(*((D*)pB1));
g*****y
发帖数: 7271
9
pB1 可以指向各种派生类,D1,D2,。。。
你没办法预先知道该cast成啥。

【在 z*y 的大作中提到】
: Can you just cast?
: B *pB2 = new D(*((D*)pB1));

h**********c
发帖数: 4120
10
Java reflection makes sure you can enumerate three things of an object's
class,
all member variables, all member functions defined, the other one forgot.
y**b
发帖数: 10166
11
嗯。不过语法可行?
还是虚函数clone好。

【在 g*****y 的大作中提到】
: pB1 可以指向各种派生类,D1,D2,。。。
: 你没办法预先知道该cast成啥。

p***o
发帖数: 1252
12
clone这个标准做法20多年前就有共识,不说java直接设计成这样,
C++里还有covariant return type这样的语言特性来支持。

【在 y**b 的大作中提到】
: 嗯。不过语法可行?
: 还是虚函数clone好。

1 (共1页)
进入Programming版参与讨论
相关主题
[合集] 又学了一招BigEndian和LittleEndian的设计
请教个Bloomberg 的 C++ 题目python不支持多态
Is the order of initialization a, b, c or c, b, a?不如各位高手挑个专题讲讲C++11吧
一个c++ constructor的问题, thanksQuestion about type conversion (转载)
C++子类中调用父类指针的问题MPI不同进程之间传递指针的一个陷阱
子类的assignment operator 怎么访问父类的private member内存泄露了吗?
子类的copy constructor怎么写包含指针的类和vector的问题
A C++ runtime type casting question请问c++里empty class的问题
相关话题的讨论汇总
话题: pb1话题: 父类话题: pb2话题: 子类话题: java