TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码
搜索到 1 篇与 的结果
2025-07-13

如何避免C++对象切片问题:值传递与引用传递的选择策略

如何避免C++对象切片问题:值传递与引用传递的选择策略
一、对象切片:多态性的隐形杀手当我们将派生类对象以值方式传递给基类参数时,编译器会悄悄执行"切片操作"——丢弃所有派生类特有的成员,仅保留基类部分。这种数据截断不仅破坏多态性,还可能引发难以察觉的逻辑错误。cpp class Base { public: virtual void print() { cout << "Base" << endl; } };class Derived : public Base { string extradata = "Extended"; public: void print() override { cout << "Derived: " << extradata << endl; } };void func(Base b) { b.print(); } // 切片发生点int main() { Derived d; func(d); // 输出"Base"而非"Derived" }二、值传递与引用传递的底层真相1. 值传递的代价 内存布局...
2025年07月13日
2 阅读
0 评论