关键词搜索

源码搜索 ×
×

对象的初始化

发布2014-11-03浏览7203次

详情内容

  1. #include <iostream>
  2. using namespace std;
  3. class A
  4. {
  5. private:
  6. int x;
  7. int y;
  8. public:
  9. A()
  10. {
  11. cout << "constructor0" << endl;
  12. }
  13. A(int xx, int yy)
  14. {
  15. cout << "constructor" << endl;
  16. x = xx;
  17. y = yy;
  18. }
  19. void print()
  20. {
  21. cout << x << "," << y << endl;
  22. }
  23. };
  24. int main()
  25. {
  26. A a1(1, 2); // 初始化
  27. A(3, 4).print(); // 临时对象
  28. A a2; // 没有指定参数
  29. a2.print();
  30. A a3 = A(5, 6); // 这里只有一个对象啊, 所以只调用一次构造函数
  31. A m[4] = {A(7, 8), A(9, 10), A(11, 12)}; // 调用构造函数4次, 而不是8次
  32. int size = sizeof(m) / sizeof(m[0]);
  33. int i = 0;
  34. for(i = 0; i < size; i++)
  35. {
  36. m[i].print();
  37. }
  38. return 0;
  39. }

        结果为:

constructor
constructor
3,4
constructor0
-858993460,-858993460
constructor
constructor
constructor
constructor
constructor0
7,8
9,10
11,12
0,0


       一个小问题: 上面程序中, 用户不写默认构造函数可以吗?  不可以, 这样编译会出错。 当且仅当类中没有构造函数的时候, 编译器会为它创建一个, 所以下面程序是对的:

 

  1. #include <iostream>
  2. using namespace std;
  3. class A
  4. {
  5. };
  6. int main()
  7. {
  8. A a1;
  9. return 0;
  10. }

 

 

 

 

 

相关技术文章

最新源码

下载排行榜

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载