- 论坛徽章:
- 0
|
我对构造函数有些疑问:
"是否在每个类的对象被创建以后就立即调用构造函数?"
如以下程序:
1. #include "iostream.h"
2. class Sub
3. {
4. public:
5. Sub(){cout<<"Sub"<<endl;A=10;B=20;C=30;}
6. void show();
7. private:
8. int A,B,C;
9. };
10. void Sub::show()
11. {
12. cout<<A<<" "<<B<<" "<<C<<endl;
13. }
14. class Far
15. {
16. public:
17. Far(int fa,int fb,Sub s):SS(s){cout<<"Far"<<endl;FA=fa;FB=fb;}
18. void show();
19. private:
20. int FA,FB;
21. Sub SS;
22. };
23. void Far::show()
24. {
25. cout<<FA<<" "<<FB<<endl;
26. SS.show();
27. }
28. void main()
29. {
30. Sub ss;
31. Far ff(11,22,ss);
32. ff.show();
33. }
程序的运行结果为:
Sub
Far
11 22
10 20 30
我知道运行结果中的Sub和Far应该分别是在第30句和第31句处创建ss对象和ff对象时调用的构造函数。
但为何在第17句和第21句处创建Sub s和Sub SS时没有调用构造函数? |
|