64,636
社区成员
发帖
与我相关
我的任务
分享
#include "iostream.h"
class B
{
public:
B()
{
cout << "construct B() \n";
}
B(int )
{
cout << "construct B(int ) \n";
}
~B()
{
cout <<"deconstruct B \n";
}
};
class A
{
public:
B b; //这里为什么不能调用construct B() ;
A()
{
cout << "construct A() \n";
}
A(B b, int ) : b (2)
{
cout << "construct A(B b ,int) \n";
}
~A()
{
cout <<"deconstruct A \n";
}
};
void main()
{
B b;
A a(b, 5);
}
construct B()
construct B(int )
construct A(B b ,int)
deconstruct B //? 怎么来的
deconstruct A
deconstruct B
deconstruct B
Press any key to continue
#include "iostream.h"
class B
{
public:
B()
{
cout << "construct B() \n";
}
~B()
{
cout <<"deconstruct B \n";
}
};
class A
{
public:
B c; //这里为什么调用construct B() ;和上面的例子有什么不同???
A()
{
cout << "construct A() \n";
}
A(B b, int )
{
cout << "construct A(B b ,int) \n";
}
~A()
{
cout <<"deconstruct A \n";
}
};
void main()
{
B b;
A a(b, 5);
}
#include "iostream.h"
class B
{
public:
B()
{
cout << "construct B() \n";
}
B(int )
{
cout << "construct B(int ) \n";
}
~B()
{
cout <<"deconstruct B \n";
}
};
class A
{
public:
B b; //这里为什么不能调用construct B() ;
A()
{
cout << "construct A() \n";
}
A(B b, int ) : b (2)//这里因为是对象最为函数参数,其实要调用一次赋值构造函数
{
cout << "construct A(B b ,int) \n";
}
~A()
{
cout <<"deconstruct A \n";
}
};
void main()
{
B b;
A a(b, 5);
}
deconstruct B //对应 construct A(B b ,int) 中的 B b
deconstruct A //对应 construct A(B b ,int)
deconstruct B //对应 construct B(int )
deconstruct B //对应 construct B()
class B
{
public:
B()
{
cout << "construct B() \n";
}
B( B& )
{
cout << "construct B(B&) \n";
}
B(int )
{
cout << "construct B(int ) \n";
}
~B()
{
cout <<"deconstruct B \n";
}
};