您的位置:首页 > 编程语言 > C语言/C++

C++primer笔记之vector多态

2015-12-05 14:34 323 查看
bulk为Quote派生类
vector<Quote> basket;
basket.push_back(q);
basket.push_back(bulk("think in C++", 100.0, 50, 0.5));
cout << "普通对象:"<<endl;
cout<<basket.back().net_price(10)<<endl;

调用的是Quote的net_price成员,没有多态,vector 中的bulk 为切割版的Quote对象

vector<shared_ptr<Quote>> bskt;
bskt.push_back(make_shared<Quote>("think in java",99.0));
bskt.push_back(make_shared<bulk>("think in C++",100.0,50,0.5));
cout << "shared_ptr" << endl;
cout<<bskt.back()->net_price(100);
调用了bulk的net_price函数,多态

所以我们无法直接用对象实现多态,反而通过指针或引用实现多态
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: