【发布时间】:2011-11-22 07:28:18
【问题描述】:
class file {
std::string name;
};
class directory : public file {
std::vector<file*> entries;
};
directory d;
file f;
f = d; // Only d.name is copied to f; entries are lost
如果我们这样做:
directory* dp = new directory;
file* fp ;
fp = dynamic_cast<file*>(dp);
将条目和身份保留为目录对象,或者仍然仅将 dp->name 复制到 f;条目丢失。
另外,downcast 是如何工作的?
如果我们这样做会发生什么:
dp = dynamic_cast<dp*> (fp);
【问题讨论】:
-
一个小旁注:如果您打算稍后分配给该指针,则不应分配带有
new的指针,这是内存泄漏。 -
无赋值,
dynamic_cast<>都不起作用,因为您使用的是私有继承。另外,你有什么问题? -
@Jaochim 你对
delete不是很熟悉吗?
标签: c++ inheritance pointers casting