我正在编写一个指向派生类的指针的程序。这是我的代码,
#include <iostream>
using namespace std;
class base {
int i;
public:
void set_i(int num) { i=num; }
int get_i() { return i; }
};
class derived: public base {
int j;
public:
void set_j(int num) {j=num;}
int get_j() {return j;}
};
int main()
{
base *bp;
derived d[2];
bp = d;
d[0].set_i(1);
d[1].set_i(2);
cout << bp->get_i() << " ";
bp++;
cout << bp->get_i();
return 0;
}
程序显示 1 个正确值和其他垃圾值,因为
bp++;
正在递增指针以指向类基类型但不是类派生类型的下一个对象。
我们可以通过写作正确显示答案
> bp =& d[0];
bp1=&d[1];
d[0].set_i(1);
d[1].set_i(2);
但是我们必须分配 2 个指针。类似地,如果我们必须取 100 个值,那么我们必须分配 100 个指针。这不好。
我的问题是我们可以通过单指针显示数组的值吗?