这个C++程序哪出错了

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:01:46
#include <iostream.h>
class A
{ public:
A(int m)//AÀà¶ÔÏóÐèÒª´«µÝ²ÎÊý
{ x=m;
cout <<"object A"<<x<<" construst"<<endl; }
~A() {cout<<"object A"<<x<< " deconstrust"<<endl;}
private: int x; };
class B
{public:
B(int m)
{ x=m;
cout<<"object B"<<x<<" construst"<<endl; }
~B()
{ cout<<"object B"<<x<< " deconstrust"<<endl;}
private:
int x;
A a; };
void main()
{ B b1(2);
cout<<"function main end "<<endl; }

A没有合适的构造函数,这个问题很简单的。
当你在A类的声明中没有声明任何构造函数时,系统会给你的类一个默认的构造函数A()
一旦你声明了一个构造函数后,那么系统就不会再帮你做这个事情了。于是像你代码中声明了一个A(int m)后,声明A的对象时必须给一个参数。
当你给出一个代参的构造函数后,最好再声明出A()这个构造函数。
另外:对于内嵌类,你应该声明B的构造函数为B(int m):A(。。)//A的构造函数,具体的你可以去查任何一本C++内嵌类的书。

A缺少一个无参构造函数:
A() {x=0;};