#include<iostream>
#include<cmath>
using namespace std;
class Figure
{
public:
virtual void Area()
{}
};
class CFX:public Figure
{
private:
int a;
int b;
public:
CFX(int a,int b)
{
this->a=a;
this->b=b;
}
void Area()
{
cout<<a*b<<endl;
}
};
class LX:public Figure
{
private:
int a;
int b;
float alpha;
public:
LX(int a,int b,float alpha)
{
this->a=a;
this->b=b;
this->alpha=alpha;
}
void Area()
{
cout<<a*b*sin(alpha)<<endl;
}
};
class Square :public CFX,LX
{
private:
int a;
public:
Square(int a) //就是这里的构造函数出错了,请各位指教,谢谢……
{
this->a=a;
}
void Area()
{
cout<<a*a<<endl;
}
};
int main()
{
CFX X(2,6);
Square H(5);
X.Area();
H.Area();
return 0;
}
#include<iostream>
#include<string>
usingnamespacestd;
classStudent
{
public:
Student(intn,stringnam)
{
num=n;
name=nam;
}
voiddisplay()
{
cout<<"num:"<<num<<endl<<"name:"<<name<<endl;
}
protected:
intnum;
stringname;
};
classStudent1:publicStudent
{
public:
Student1(intn1,stringnam1,inta):Student(n1,nam1)
{
age=a;
}
voidshow()
{
cout<<"Thisstudentis:"<<endl;
display();
cout<<"age:"<<age<<endl;
}
private:
intage;
};
intmain()
{
Student1stud1(20120107,"Johnson",20);
stud1.show();
return0;
}
扩展资料
C++继承与构造函数:
#include<iostream>
usingnamespacestd;
classObjectB
{
public:
ObjectB(intobjb):objb_(objb)
{
cout<<"ObjectB..."<<endl;
}
~ObjectB()
{
cout<<"~ObjectB..."<<endl;
}
intobjb_;
};
classObjectD
{
public:
ObjectD(intobjd):objd_(objd)
{
cout<<"ObjectD..."<<endl;
}
~ObjectD()
{
cout<<"~ObjectD..."<<endl;
}
intobjd_;
};
classBase
{
public:
Base(intb):b_(b),objb_(111)
{
cout<<"Base..."<<endl;
}
Base(constBase&other):objb_(other.objb_),b_(other.b_)
{
}
~Base()
{
cout<<"~Base..."<<endl;
}
intb_;
ObjectBobjb_;
};
classDerived:publicBase
{
public:
Derived(intb,intd):d_(d),Base(b),objd_(222)
{
cout<<"Derived..."<<endl;
}
Derived(constDerived&other):d_(other.d_),objd_(other.objd_),Base(other)
{
}
~Derived()
{
cout<<"~Derived..."<<endl;
}
intd_;
ObjectDobjd_;
};
intmain(void)
{
Derivedd(100,200);
cout<<d.b_<<""<<d.d_<<endl;
Baseb1(100);
Baseb2(b1);
cout<<b2.b_<<endl;
Derivedd2(d);
return0;
}
因为父类CFX和LX定义了构造函数,所以再没有默认的构造函数,所以必须显式调用它们的构造函数。
一句话,父类不能只写有参构造(无参被屏蔽了),若一定只写有参构造,那就必须 子类要显式调用父类的有参构造。 否则就会报错。
因为,除了上述情况外,子类会无条件的调用父类无参构造,若父类没有无参构造,所以就会报错。