构造函数问题,请指教!
xgbing 博客专家认证 2007-01-16 04:33:29 #include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
class A
{
public:
A()
{
cout<<"A()"<<endl;
A(5);
};
A(int val)
{
cout<<"A(int)"<<endl;
m_i=val;
};
void Print()
{
cout<<m_i<<endl;
};
private:
int m_i;
};
class B
{
public:
B():m_a()
{
cout<<"B()"<<endl;
};
void Print()
{
m_a.Print();
}
public:
A m_a;
};
int _tmain(int argc, _TCHAR* argv[])
{
A a1;
a1.Print();
B b1;
b1.m_a.Print();
b1.Print();
getch();
return 0;
}
结果是
A()
A(int)
-858993460
A()
A(int)
B()
-858993460
-858993460
按输出显示初始化a1和b1都执行了A(),然后又执行了A(5),为何结果却不对!
而将类A改为这样却是对的:
class A
{
public:
//A()
//{
// cout<<"A()"<<endl;
// A(5);
//};
A(int val=5)
{
cout<<"A(int)"<<endl;
m_i=val;
};
void Print()
{
cout<<m_i<<endl;
};
private:
int m_i;
};
为何???
高手解释下