#include<iostream>
using namespace std;
class A //定义类A
{
public:
A(int);
virtual void dis(); //虚函数
protected:
int h;
};
A::A(int hh) //类A的构造函数
{
h=hh;
}
void A::dis()
{
cout<<"h:"<<h;
}
class B:public A //定义类B,公有继承
{
public:
B(int,int);
void dis();
protected:
int m;
};
B::B(int hh,int mm):A(hh),m(mm){} //类B的构造函数
void B::dis()
{
cout<<"m:"<<m;
}
class C:public B //定义类C,公有继承
{
public:
C(int hh,int mm,int ss);
void dis();
protected:
int s;
};
C::C(int hh,int mm,int ss):B(hh,mm),s(ss){} //类C的构造函数。
void C::dis()
{
cout<<"s:"<<s;
}
int main()
{
C a1(3,5,1);
cout<<a1.dis(); //这报错,为什么
return 0;
}
这个程序本来一开始的目的我就是想测试虚函数的,可现在总有大大小小的毛病,真是郁闷,高手们帮看看应该怎么改啊。顺便给我讲讲那到底是什么错。谢谢了!
楼主对虚函数和多态还没理解透,我给你写了个程序,能达到你的结果,但写法稍有不同,你可以参考一下,有什么问题可以大家讨论一下
#include <iostream>
using namespace std;
class A
{
public:
A(int hh):h(hh){cout<<"Constructor A ..."<<endl;}
virtual ~A(){cout<<"Destructor A ..."<<endl;}
virtual void display(){cout<<"h:"<<h<<endl;}
private:
int h;
};
class B : public A
{
public:
B(int hh, int mm):A(hh),m(mm){cout<<"Constructor B ..."<<endl;}
~B(){cout<<"Destructor B ..."<<endl;}
void display(){
A::display();
cout<<"m:"<<m<<endl;
}
private:
int m;
};
class C : public B
{
public:
C(int hh, int mm, int ss):B(hh,mm),s(ss){cout<<"Constructor C ..."<<endl;}
~C(){cout<<"Destructor C ..."<<endl;}
void display(){
B::display();
cout<<"s:"<<s<<endl;
}
private:
int s;
};
int main()
{
A *c = new C(3, 5, 1);
c->display();
delete c;
return 0;
}