又一个继承的程序,大家再来帮我看看,谢谢啦

as11qwer 2008-11-16 09:24:12
有个错误,大家帮我改改啊,谢谢啦,在错的地方注明下,呵呵
#include<iostream.h>
class baseclass
{
public:
void fn1()
{
++a;
cout<<a<<endl;
}
void fn2()
{
--a;
cout<<a<<endl;
}
int a;
};
class derivedclass:public baseclass
{
public:
derivedclass(int b=0):baseclass(b)
{a=b;}
void fn1()
{
++a;
cout<<a<<endl;
}
void fn2()
{
--a;
cout<<a<<endl;
}
};
void main()
{
derivedclass D;
baseclass *p1=0;
derivedclass *p2=0;
cout<<"请输入A的值:"<<endl;
cin>>D.a;
D.fn1();
D.fn2();
p1->fn1();
p1->fn2();
p2->fn1();
p2->fn2();
}

...全文
91 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bind888 2008-11-16
  • 打赏
  • 举报
回复
ding
android2008 2008-11-16
  • 打赏
  • 举报
回复
ding
zengkun100 2008-11-16
  • 打赏
  • 举报
回复
简直乱七八糟啊
wzyzb 2008-11-16
  • 打赏
  • 举报
回复
derivedclass(int b=0):baseclass(b) //既然这里调用了父类的构造函数(带参数的),那么上面应该补上带int的构造函数
太乙 2008-11-16
  • 打赏
  • 举报
回复
#include <iostream.h> 
class baseclass
{
public:
baseclass(int i):a(i){}//补上
void fn1()
{
++a;
cout <<a <<endl;
}
void fn2()
{
--a;
cout <<a <<endl;
}
int a;
};
class derivedclass:public baseclass
{
public:
derivedclass(int b=0):baseclass(b) //既然这里调用了父类的构造函数(带参数的),那么上面应该补上带int的构造函数
{}
//下面既然是一样的,大可不必!
/*void fn1()
{
++a;
cout <<a <<endl;
}
void fn2()
{
--a;
cout <<a <<endl;
} */
};
void main()
{
derivedclass D;
baseclass *p1=&D; //得赋值
derivedclass *p2=&D; //要不下面那个p1,p2的引用就是空!
cout <<"请输入A的值:" <<endl;
cin>>D.a;
D.fn1();
D.fn2();
p1->fn1();
p1->fn2();
p2->fn1();
p2->fn2();
}

toadzw 2008-11-16
  • 打赏
  • 举报
回复
#include <iostream.h>
class baseclass
{
public:
void fn1()
{
++a;
cout <<a <<endl;
}
void fn2()
{
--a;
cout <<a <<endl;
}
int a;
};
class derivedclass:public baseclass
{
public:
derivedclass(int b=0):baseclass() //这个B不要使用,因为基类构造函数中没有为一个参数的对应构造函数
{a=b;}
void fn1()
{
++a;
cout <<a <<endl;
}
void fn2()
{
--a;
cout <<a <<endl;
}
};
void main()
{
derivedclass D;
baseclass *p1=0;
derivedclass *p2=0;
cout <<"请输入A的值:" <<endl;
cin>>D.a;
D.fn1();
D.fn2();
p1->fn1();
p1->fn2();
p2->fn1();
p2->fn2();
}
太乙 2008-11-16
  • 打赏
  • 举报
回复
#include <iostream.h> 
class baseclass
{
public:
baseclass(int i):a(i){}//补上
void fn1()
{
++a;
cout <<a <<endl;
}
void fn2()
{
--a;
cout <<a <<endl;
}
int a;
};
class derivedclass:public baseclass
{
public:
derivedclass(int b=0):baseclass(b) //既然这里调用了父类的构造函数(带参数的),那么上面应该补上带int的构造函数
{}
void fn1()
{
++a;
cout <<a <<endl;
}
void fn2()
{
--a;
cout <<a <<endl;
}
};
void main()
{
derivedclass D;
baseclass *p1=&D; //得赋值
derivedclass *p2=&D; //要不下面那个p1,p2的引用就是空!
cout <<"请输入A的值:" <<endl;
cin>>D.a;
D.fn1();
D.fn2();
p1->fn1();
p1->fn2();
p2->fn1();
p2->fn2();
}
fox000002 2008-11-16
  • 打赏
  • 举报
回复
baseclass 的构造函数没有

derivedclass 的构造函数乱写

重载的函数没有加 virtual 修饰 或者说相同的函数多写一次
lin_style 2008-11-16
  • 打赏
  • 举报
回复
请大家把1、2楼连起来读
lin_style 2008-11-16
  • 打赏
  • 举报
回复
缺了一个b
lin_style 2008-11-16
  • 打赏
  • 举报
回复
好明显。。











LZ的头像。

65,210

社区成员

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

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