关于继承,引用,构造函数的问题

jojobunny 2003-08-28 09:57:19
#include "iostream.h"


class A
{
public:
A(int a,int b) {cout<<"A"<<endl;}

};

class B:public A
{
public:
B(int c,int d);
};

B::B(int c, int d):A(int c,int d)
{
cout<<"B"<<endl;
};

void main()
{
int i=1,j=2,p=3,q=4;
A *show;
B *hi;
show->A(i,j);
hi->B(p,q);
}


为什么以上程序编译不通过?谢谢!
请详解!
...全文
39 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
njtu 2003-08-28
  • 打赏
  • 举报
回复
void main()
{
int i=1,j=2,p=3,q=4;
A *show;
B *hi;
//指针没有初始化,没有指向具体的对象
show->A(i,j);
hi->B(p,q);
}
sevecol 2003-08-28
  • 打赏
  • 举报
回复
改成
#include <iostream>
using namespace std;

class A
{
public:
A(int a,int b) {cout<<"A"<<endl;}

};

class B:public A
{
public:
B(int c,int d);
};

B::B(int c, int d):A(c,d)
{
cout<<"B"<<endl;
};

int _tmain(int argc, _TCHAR* argv[])
{
int i=1,j=2,p=3,q=4;
A *show=new A(i,j);
B *hi=new B(p,q);
return 0;
}
Peterwby 2003-08-28
  • 打赏
  • 举报
回复
#include "iostream.h" 换成下面这样看看
#include <iostream>
using namespace std;

B::B(int c, int d):A(int c,int d) 这句要这样
B::B(int c, int d):A(c, d)

show->A(i,j);//这两句有问题呀~~
hi->B(p,q);// "->"后面应该跟一个成员而不是一个临时对象
zwzzwz 2003-08-28
  • 打赏
  • 举报
回复
1) 对于指针show和hi,你没有为他们实例化,
A *show=new A(i,j);
2) 构造函数系统会自己调,一般不要自己调用,除非在类的定义时在构造函数加explicit
robbie24 2003-08-28
  • 打赏
  • 举报
回复
void main()
{
int i=1,j=2,p=3,q=4;
A *show;
B *hi;
show->A(i,j);
hi->B(p,q);
}
你用基类的指针想表示什么? 多态? 不会吧~
constructor又不是虚函数,都是静态绑定,你想表示多态的话,这个举例是不当的

64,654

社区成员

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

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