【发布时间】:2019-04-09 19:32:23
【问题描述】:
有时,c++ 默认允许切片可能会令人烦恼。例如
struct foo { int a; };
struct bar : foo { int b; };
int main() {
bar x{1,2};
foo y = x; // <- I dont want this to compile!
}
这个compiles and runs as expected!不过,如果我不想启用切片怎么办?
写foo 的惯用方法是什么,这样就不能对任何派生类的实例进行切片?
【问题讨论】:
-
最简单的方法是不使用继承。你有
foo是bar的成员变量。
标签: c++ inheritance object-slicing