为什么提示类不存在默认构造函数????
classA{floatx,y;public:A(inta,intb){x=a;y=b;}voidShow(){cout<<"x="<<x<<'\t'<<"y="<<y<...
class A
{
float x, y;
public:
A(int a, int b) { x = a; y = b; }
void Show(){ cout << "x=" << x << '\t' << "y=" << y << '\n'; }
};
class C
{
float z;
A a1;//类C的数据成员为类A 的对象a1
public:
C(int a, int b, int c)
{
z = a;
A a1(b, c);
}//类C的对象初始化
void Show(){
cout << "z = " << z << '\n'; a1.Show();
}
};
void main(void)
{
C c1(1.0, 2, 3); //对类C的对象初始化
c1.Show();
system("pause");
} 展开
{
float x, y;
public:
A(int a, int b) { x = a; y = b; }
void Show(){ cout << "x=" << x << '\t' << "y=" << y << '\n'; }
};
class C
{
float z;
A a1;//类C的数据成员为类A 的对象a1
public:
C(int a, int b, int c)
{
z = a;
A a1(b, c);
}//类C的对象初始化
void Show(){
cout << "z = " << z << '\n'; a1.Show();
}
};
void main(void)
{
C c1(1.0, 2, 3); //对类C的对象初始化
c1.Show();
system("pause");
} 展开
展开全部
class A
{
float x, y;
public:
A(int a, int b) { x = a; y = b; } 在类A中只定义了这一个带参的构造函数
A() {} //加一个不带参的构造函数
void Show(){ cout << "x=" << x << '\t' << "y=" << y << '\n'; }
};
class C
{
float z;
A a1;//这里定义一个A类的对象a1, 没有带参数,所以会报错,在A中加一个不带参的构造函数就好了。
追问
可是如果写成 C(int a,int b,int c):a1(b, c) {z=a;}//类C的对象初始化
就是对的 为什么?
追答
C(int a,int b,int c):a1(b, c) {z=a;} 这种写法应该是 相当于调用了A(int a, int b)这个函数去定义类对象了!
class C
{
float z;
A a1;//类C的数据成员为类A 的对象a1 这里应该不是一个真正的对象a1,只有在类C对象定义时才会真正定义a1,其构造格式(对应的函数)是看类C构造函数是如何实现的。
展开全部
A a1;//类C的数据成员为类A 的对象a1
A类没有默认构造函数,所以无法创建该对象。
A类没有默认构造函数,所以无法创建该对象。
更多追问追答
追问
能不能再清楚点
追答
由于A类提供了有参构造函数,所以系统就不提供默认构造函数(即无参构造函数)了,因此在创建C类对象时,无法创建其A类对象成员a1。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的类C只有一个构造函数:C(int, int, int),然而你在main第1行调用了C(float, int, int)。参数的类型不匹配。
追问
1.0改成1也是一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询