#include<iostream>
using namespace std;
class ccouter
{
private:
int value;
public:
ccouter();
ccouter(int value);
~ccouter();
};
class cexample
{
private:
int value;
public:
ccouter car;
cexample();
cexample(int val);
void disp();
~cexample();
};
ccouter::ccouter()
{
cout<<"ccouter constructor!"<<endl;
value=0;
}
ccouter::ccouter(int val)
{
cout<<"ccouter constructor2"<<endl;
value=val;
}
//ccouter::ccouter()                       这个部分为何不能要?一加上编译都通不过.
//{
// cout<<"ccouter destructor"<<endl;
//}
cexample::cexample()
{
cout<<"cexample constructor1"<<endl;
value=0;
}
cexample::cexample(int val)
{
cout<<"cexample constructor2"<<endl;
value=val;
}
void cexample::disp()
{
cout<<"value="<<value<<endl;
}
cexample::~cexample()
{
cout<<"cexample destructor"<<endl;
}
void main()
{
cexample e(2);  //把这里改成cexample a,e(2); 编译都不会出错?为什么不需要无参数构造函数都可以啊?
    e.disp();
}上面的程序编译能通过了,但组建还是会出错.想不通为什么不能要那个无参数的构造函数呢?
请高手指点.

解决方案 »

  1.   

    //ccouter::ccouter()                      这个部分为何不能要?一加上编译都通不过.
    //{
    // cout < <"ccouter destructor" < <endl;
    //} 
    肯定不能要啊,加上的话就有两个ccouter::ccouter()了啊,你已经写了一个了
    ccouter::ccouter()
    {
    cout < <"ccouter constructor!" < <endl;
    value=0;
      

  2.   

    ~~~马虎了吧~~~两个ccouter::ccouter()                      
      

  3.   

    //ccouter::ccouter()                      这个部分为何不能要?一加上编译都通不过.
    //{
    // cout < <"ccouter destructor" < <endl;
    //} 
    这个应该是析构函数吧,改为:
    ccouter::~ccouter()                      //变为析构函数
    {
    cout <<"ccouter destructor" <<endl;
    }