class parent {
virtual ~parent();
private:
int father_private;
int common;
}
~parent() {
common = 1;
}
class child: public parent {
~child();
private:
int common;
}
~child() {
common = 2;
}
Run Code Online (Sandbox Code Playgroud)
根据上述逻辑,预计会执行以下步骤:
在第2步中,"这是常见的=孩子的共同点"吗?
我发现地址不一样所以它可能意味着编译器不会取名,而是在类中使用offeset.因此,步骤2的分配可能会将1写入未知地址并导致意外崩溃,我是对的吗?
我发现Andorid本机流有一些类,其构造函数或析构函数可以访问其私有数据成员.它使得继承性成为上述问题的极其困难.你是如何解决这个问题的?
这段代码:
class child: public parent {
...
int common;
}
Run Code Online (Sandbox Code Playgroud)
在类中定义一个不同的 int命名.因为基类具有任何命名的符号,所以简单地隐藏该基本符号.commonchildcommon
如果基本符号不要紧,parent::common是int或std::string或函数名或枚举.它是隐藏的.
在第2步中,"这是常见的=孩子的共同点吗?"
不.在parent功能中,它是父母的common.
因此,步骤2的分配可能会将1写入未知地址并导致意外崩溃,我是对的?
不,一个任务分配给parent::common.另一个分配给child::common.它们是两个不同的变量.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |