关于质疑“reference to abstract class”我写了下面的例子:参考抽象类分配问题
#include <iostream>
#include <vector>
class data
{
public:
virtual int get_value() = 0;
};
class data_impl : public data
{
public:
data_impl(int value_) : value(value_) {}
virtual int get_value() { return value; }
private:
int value;
};
class database
{
public:
data& get(int index) { return *v[index]; }
void add(data* d) { v.push_back(d); }
private:
std::vector< data* > v;
};
int main()
{
data_impl d1(3);
data_impl d2(7);
database db;
db.add(&d1);
db.add(&d2);
data& d = db.get(0);
std::cout << d.get_value() << std::endl;
d = db.get(1);
std::cout << d.get_value() << std::endl;
data& d_ = db.get(1);
std::cout << d_.get_value() << std::endl;
d_ = db.get(0);
std::cout << d_.get_value() << std::endl;
return 0;
}
令我惊讶的是,例如打印:
3
3
7
7
,它看起来像参考这项工作与我的期望不同。我会期待:
3
7
7
3
请问您指出我的错误是什么?
谢谢!
+1提切片。这是真正的问题。 –