c++

全靠本校养活 2019-04-15 11:46:36
请问各位大佬,我用派生类 调用了基类的一个函数成员,但是函数输出来的结果不一致。
...全文
143 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
全靠本校养活 2019-05-23
  • 打赏
  • 举报
回复
大佬,再帮我看看哪里有错误。为什么不输出。这个题是记录出现每个的字母个数
stherix 2019-05-22
  • 打赏
  • 举报
回复
while(true){ char * p= s; gets(p); int len = strlen(p); if(len == 0) break; p+=len; }
全靠本校养活 2019-05-22
  • 打赏
  • 举报
回复
引用 13 楼 stherix的回复:
vm.r=c.r; vm.h=c.h; vm.list(); vm.putv();
输入多行文字,每一行以空行结束。这是代码,类里面的enter函数就是输入,不知道该怎么写 #include<cstdio> #include<cstring> using namespace std; class total{ public:char a[26]; char s[200];int i; void enter(){ } void cale(); void puts(); }; void total::cale(){ for(i=0;s[i]!='\0';i++){ if(s[i]>='A'&&s[i]<='Z') a[s[i]-'A']++; if(s[i]>='a'&&s[i]<='z') a[s[i]-'a']++;} } void total::puts(){ for(i=0;i<26;i++)if(a[i]) printf("%c %d\n",i+'a',a[i]); } int main(){ total sum; memset(sum.a,0,sizeof(sum.a)); sum.enter(); sum.cale(); sum.puts(); return 0;}
全靠本校养活 2019-05-22
  • 打赏
  • 举报
回复
大佬,在不在,想请教个问题
stherix 2019-04-16
  • 打赏
  • 举报
回复
应该不会有问题 你把代码贴出来
全靠本校养活 2019-04-16
  • 打赏
  • 举报
回复
引用 13 楼 stherix的回复:
vm.r=c.r; vm.h=c.h; vm.list(); vm.putv();
哦哦,谢谢了。我还得继续努力
stherix 2019-04-16
  • 打赏
  • 举报
回复
vm.r=c.r; vm.h=c.h; vm.list(); vm.putv();
全靠本校养活 2019-04-16
  • 打赏
  • 举报
回复
引用 11 楼 stherix的回复:
[quote=引用 10 楼 qq_44925740 的回复:] [quote=引用 8 楼 stherix的回复:]pillar vm;vm.getr();vm.grth(); vm.list(); vm.putv(); 把录入都写一次就好了
我想不再输入r h。可不可以实现?就是直接用基类已经输入的r h[/quote] 那除非手动把值赋值过去,或者写拷贝构造函数 因为基类的对象和派生类的对象是2个不同的东西,在内存中的地址也完全不一样 所以c和vm之间是没有任何联系的[/quote] 那请问怎么复制过去呢
stherix 2019-04-16
  • 打赏
  • 举报
回复
引用 10 楼 qq_44925740 的回复:
[quote=引用 8 楼 stherix的回复:]pillar vm;vm.getr();vm.grth(); vm.list(); vm.putv(); 把录入都写一次就好了
我想不再输入r h。可不可以实现?就是直接用基类已经输入的r h[/quote] 那除非手动把值赋值过去,或者写拷贝构造函数 因为基类的对象和派生类的对象是2个不同的东西,在内存中的地址也完全不一样 所以c和vm之间是没有任何联系的
全靠本校养活 2019-04-16
  • 打赏
  • 举报
回复
引用 8 楼 stherix的回复:
pillar vm;vm.getr();vm.grth(); vm.list(); vm.putv(); 把录入都写一次就好了
我想不再输入r h。可不可以实现?就是直接用基类已经输入的r h
全靠本校养活 2019-04-16
  • 打赏
  • 举报
回复
引用 8 楼 stherix的回复:
pillar vm;vm.getr();vm.grth(); vm.list(); vm.putv(); 把录入都写一次就好了
我想不再输入r h。可不可以实现?就是直接用基类已经输入的r m
stherix 2019-04-16
  • 打赏
  • 举报
回复
pillar vm;vm.getr();vm.grth(); vm.list(); vm.putv(); 把录入都写一次就好了
全靠本校养活 2019-04-16
  • 打赏
  • 举报
回复
引用 5 楼 stherix的回复:
派生类的成员没有输入值,半径和高都是0 vm也要getr geth才能够设置成员的值
谢谢了,我才开始学c++ 学校没发书。就只有自己在mooc上看太菜了我。具体改怎么改呢?
全靠本校养活 2019-04-16
  • 打赏
  • 举报
回复
引用 5 楼 stherix的回复:
派生类的成员没有输入值,半径和高都是0 vm也要getr geth才能够设置成员的值
谢谢了,我才开始学c++ 学校没发书。就只有自己在mooc上看太菜了我
stherix 2019-04-16
  • 打赏
  • 举报
回复
派生类的成员没有输入值,半径和高都是0 vm也要getr geth才能够设置成员的值
全靠本校养活 2019-04-16
  • 打赏
  • 举报
回复
#include<iostream> using namespace std; const double PI=3.14; class Cylinder{ public: double r,v,h; void getr(){cout<<"input r:";cin>>r;} void grth(){cout<<"input h:";cin>>h;} void cv(){v=PI*r*r*h;} void putcv(){cout<<"体积="<<v<<"\n";} }; class pillar:public Cylinder{ public: void list(); void putv(){cout<<"体积="<<v<<"\n";}}; void pillar::list(){Cylinder::cv();} int main(){ Cylinder c; c.getr(); c.grth(); c.cv(); c.putcv(); pillar vm; vm.list(); vm.putv();return 0;}
全靠本校养活 2019-04-16
  • 打赏
  • 举报
回复
引用 2 楼 stherix的回复:
应该不会有问题 你把代码贴出来
#include<iostream>using namespace std;const double PI=3.14;class Cylinder{ public: double r,v,h; void getr(){cout<<"input r:";cin>>r;} void grth(){cout<<"input h:";cin>>h;} void cv(){v=PI*r*r*h;} void putcv(){cout<<"体积="<<v<<"\n";} }; class pillar:public Cylinder{ public: void list(); void putv(){cout<<"体积="<<v<<"\n";}};void pillar::list(){Cylinder::cv();}int main(){ Cylinder c; c.getr(); c.grth(); c.cv(); c.putcv(); pillar vm; vm.list(); vm.putv();return 0;}
全靠本校养活 2019-04-15
  • 打赏
  • 举报
回复
在派生类B的fun()中使用A::fun()就是调用基类的函数了,但是输出不一样

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧