Base b1(2), b2(10);
b1.print(); // 2
b2.print(); // 10
for (int i = 0; i < 5; i++) {
b1.setN(i, (i+1) * 20);
b2.setN(i, (i+1) * 10);
}
b1.printData(); // 20 40
b2.printData(); // 10 20 30 40 50 0 0 0 0 0
Derived d(5);
d.print(); // 5
d.printData(); // 0 0 0 0 0
for (int i = 0; i < 10; i++) {
d.setN(i, (i + 1) * 3);
}
d.printData(); // 3 6 9 12 15
d.insert(99); // "Base" class does not have "insert" method.
d.printData(); // 3 6 9 12 15 99
如何声明并定义一个class,使输出结果如注释所示
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
技术专家团-小桥流水 2021-11-30 13:58关注类的声明如下:
#include <iostream> using namespace std; class Base { protected: int len; int *pt; public: Base(int n) { len = n; pt=new int[n]; } ~Base() { if(pt) { delete[] pt; pt = 0; } } void print() { cout << len<<endl; } void printData() { for (int i =0;i<len;i++) { if(i<len-1) cout << pt[i]<<" "; else cout << pt[i]<<endl; } } void setN(int pos,int data) { if(pos < len) pt[pos] = data; } }; class Derived :public Base { public: Derived(int n):Base(n){} void insert(int data) { int* p=new int[len+1]; for(int i=0;i<len;i++) p[i] = pt[i]; p[len] = data; delete[] pt; pt = p; } }; int main() { Base b1(2), b2(10); b1.print(); // 2 b2.print(); // 10 for (int i = 0; i < 5; i++) { b1.setN(i, (i+1) * 20); b2.setN(i, (i+1) * 10); } b1.printData(); // 20 40 b2.printData(); // 10 20 30 40 50 0 0 0 0 0 Derived d(5); d.print(); // 5 d.printData(); // 0 0 0 0 0 for (int i = 0; i < 10; i++) { d.setN(i, (i + 1) * 3); } d.printData(); // 3 6 9 12 15 d.insert(99); // "Base" class does not have "insert" method. d.printData(); // 3 6 9 12 15 99 return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报