这些是一样的: int foo(bar* p) { return p->someInt(); } 和 int foo(bar& r) { return r.someInt(); } 忽略空指针的潜力。 无论someInt()是虚拟的还是通过一个bar或bar的子类,这两个函数在function上是否相同? 这是否切片什么: bar& ref = *ptr_to_bar;
我想将几个类的实例存储在一个向量中。 由于所有的类都从同一个基类inheritance,所以这应该是可能的。 想象一下这个程序: #include <iostream> #include <vector> using namespace std; class Base { public: virtual void identify () { cout << "BASE" << endl; } }; class Derived: public Base { public: virtual void identify () { cout << "DERIVED" << endl; } }; int main () { Derived derived; vector<Base> vect; vect.push_back(derived); vect[0].identify(); return […]
有人在IRC中提到过,但谷歌没有一个好的答案。