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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 php 将rtmp协议转hls协议,无法播放
- ¥15 miniconda安装不了
- ¥20 python代码编写
- ¥20 使用MPI广播数据遇到阻塞
- ¥15 TinyMCE如何去掉自动弹出的“链接…”工具?
- ¥15 微信支付转账凭证,如何解决
- ¥15 在win10下使用指纹登录时,界面上的文字最后一个字产生换行现象
- ¥20 使用AT89C51微控制器和MAX7219驱动器来实现0到99秒的秒表计数,有开始和暂停以及复位功能,下面有仿真图,请根据仿真图来设计c语言程序
- ¥15 51单片机 双路ad同步采样
- ¥15 使用xdocreport 生成word