1. 1 //构造函数的分类及调用
  2. 2 //分类
  3. 3 // 按照参数分类 无参构造函数(默认构造) 有参构造函数
  4. 4 //按照类型分类 普通构造 拷贝构造
  5. 5
  6. 6 #include <iostream>
  7. 7 using namespace std;
  8. 8
  9. 9 //1.构造函数的分类及调用
  10. 10 //分类
  11. 11 class Person
  12. 12 {
  13. 13 public:
  14. 14 //构造函数
  15. 15 Person()
  16. 16 {
  17. 17 cout << "Person无参的构造函数调用 " << endl;
  18. 18 }
  19. 19
  20. 20 Person(int a) //p2的参数
  21. 21 {
  22. 22 age = a;
  23. 23 cout << "Person有参的构造函数调用 " << endl;
  24. 24 }
  25. 25 //拷贝构造函数
  26. 26
  27. 27 Person(const Person &p)
  28. 28 {
  29. 29 //将传入的人身上所有的属性,拷贝我身上
  30. 30 age = p.age;
  31. 31 cout << "Person拷贝的构造函数调用 " << endl;
  32. 32 }
  33. 33
  34. 34
  35. 35
  36. 36 //析构函数
  37. 37 ~Person()
  38. 38 {
  39. 39 cout << "Person的析构函数调用" << endl;
  40. 40 }
  41. 41 int age;
  42. 42
  43. 43 };
  44. 44
  45. 45 //调用
  46. 46 void test01()
  47. 47 {
  48. 48 //1.括号法
  49. 49 Person p; //默认构造函数调用 无参数
  50. 50 Person p2(10); //有参函数
  51. 51
  52. 52 //拷贝构造函数
  53. 53 Person p3(p2);
  54. 54
  55. 55 //Person p1(); //因为下面这行代码,编译器会认为是一个函数的声名
  56. 56 //不会认为在创建对象
  57. 57 //注意:
  58. 58 //调用默认构造函数时候,不要加()
  59. 59 cout << "括号法-P2的年龄为: " << p2.age << endl;
  60. 60 cout << "括号法-P3的年龄为: " << p3.age << endl;
  61. 61
  62. 62 //2.显示法
  63. 63 Person p4;
  64. 64 Person p5 = Person(10); //有参构造
  65. 65 //拷贝构造
  66. 66 Person p6 = Person(p5);
  67. 67
  68. 68 //Person(10); //匿名对象 特点: 当前行执行后,系统会立即回收匿名对象
  69. 69 //cout << "aaaaaaa"<<endl;
  70. 70
  71. 71
  72. 72 //注意:
  73. 73 //不要利用拷贝构造函数 初始化匿名对象
  74. 74 //编译器会认为 Person(p6) === Person p6;对象声名 重定义
  75. 75 //Person(p6);
  76. 76
  77. 77 //3.隐式转换法
  78. 78
  79. 79 Person p7 = 10; //相当于 Person p7 = Person(10);
  80. 80 Person P8 = p7; //拷贝构造
  81. 81 }
  82. 82
  83. 83 int main()
  84. 84 {
  85. 85 test01();
  86. 86
  87. 87 system("pause");
  88. 88
  89. 89 }

C++ //构造函数的分类及调用 //分类 // 按照参数分类 无参构造函数(默认构造) 有参构造函数 //按照类型分类 普通构造 拷贝构造的更多相关文章

  1. c++——对象的构造和析构函数、构造函数的分类及调用

    1构造函数和析构函数的概念 有关构造函数 1构造函数定义及调用 1)C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数: 2)构造函数在定义时可以有参数: 3)没有任何 ...

  2. TestNG测试带参构造函数的类

    今天被同事问到一个问题,问题描述如下: 一个测试类,只有一个带参构造函数.在带参构造函数上加@Test,同时加@Parameters注解从testng.xml中传递参数.为保证测试函数在带参构造函数之 ...

  3. python基础——重访类型分类

    python基础--重访类型分类 对象根据分类来共享操作:例如,字符串.列表和元组都共享诸如合并.长度和索引等序列操作. 只有可变对象(列表.字典和集合)可以原处修改:我们不能原处修改数字,字符串.元 ...

  4. C++继承,多重继承,虚继承的构造函数以及析构函数的调用顺序问题

    #include <iostream> using namespace std; class A{ int data_a; public: A(){ data_a = ; cout < ...

  5. C++C++中构造函数与析构函数的调用顺序

    http://blog.csdn.net/xw13106209/article/details/6899370 1.参考文献 参考1: C++继承中构造函数.析构函数调用顺序及虚函数的动态绑定 参考2 ...

  6. C++构造函数的自动调用(调用一个父类的构造函数,有显性调用最好,否则就默认调用无参数的构造函数)——哲学思想:不调用怎么初始化父类的成员数据和VMT?

    我总是记不住构造函数的特点,关键还是没有领会那个哲学思想:父类的构造函数一方面要初始化它自己的成员数据,另一方面也要建立它自己的VMT呀!心里默念一百遍:一定调用父类构造函数,一定调用父类构造函数,一 ...

  7. C++ 构造函数和析构函数的调用顺序、虚析构函数的作用

    构造函数和析构函数的调用顺序 构造函数的调用顺序: 当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的构造函数,依次类推,直至到达最底层的目标派生类的构造函数为止. 析构函数的调用书序: ...

  8. 读书笔记 effective c++ Item 9 绝不要在构造函数或者析构函数中调用虚函数

    关于构造函数的一个违反直觉的行为 我会以重复标题开始:你不应该在构造或者析构的过程中调用虚函数,因为这些调用的结果会和你想的不一样.如果你同时是一个java或者c#程序员,那么请着重注意这个条款,因为 ...

  9. (copy)赋值构造函数的4种调用时机or方法

    第一种调用方法: demo #include <iostream> using namespace std; class Text { public: Text() // 无参数构造函数 ...

随机推荐

  1. python用random模块模拟抽奖逻辑(print修改end参数使打印结果不分行)

    import random   #引入random模块,运用random函数list_one=["10081","10082","10083" ...

  2. 22、部署drdb

    22.1.heartbeat部署规划: 本文的实验环境是虚拟机设备: 名称 接口 ip 用途 master-db(主) eth0 10.0.0.16/24 用于服务器之间的数据同步(直连) eth1 ...

  3. RNA

    原始地球 你会想,我们每一个细胞中都有一个遗传分子叫做DNA?那么,DNA之前有没有什么遗传分子呢?我的答案是:"有".在远古地球,那个海底有无数火山,喷发的火山口两侧都是喷涌出的 ...

  4. Docker:docker搭建redis一主多从集群(配置哨兵模式)

    角色 实例IP 实例端口 宿主机IP 宿主机端口 master 172.19.0.2 6382 192.168.1.200 6382 slave01 172.19.0.3 6383 192.168.1 ...

  5. Linux:CentOS-7配置VMware-15.5与本机IP同网段

    确认本机IP ctrl+R:输入cmd 回车 输入命令:ipconfig  可以看出一下信息:本机ip: 192.168.1.162网关:192.168.1.1DNS服务器:192.168.1.1 设 ...

  6. redis学习笔记(三)——redis的命令大全总结

    总结了一些redis五种存储类型的常用命令以及一些通用操作命令,不是很全,是在学习的时候将学到的做了个汇总,使用的时候可以查一下. 笔记写在表格里面了,不好粘贴.......后面的直接截图了..... ...

  7. Redis的结构和运作机制

    目录 1.数据库的结构 1.1 字典的底层实现 2.过期键的检查和清除 2.1 定时删除 2.2 惰性删除 2.3 定期删除 2.4 对RDB.AOF和复制的影响 3.持久化机制 3.1 RDB方式 ...

  8. [NOI2009] 诗人小G [题解]

    诗人小G 题目大意 给出 \(n\) 个长度不超过 \(30\) 的句子,要求你对其进行排版. 对于每一行,有一个规定的行标准长度 \(L\) ,每一行的不协调度等于该行的实际长度与行标准长度差的绝对 ...

  9. python使用笔记15--操作Excel

    python操作Excel需要引入第三方模块 执行以下命令: pip install xlwt pip install xlrd pip install xlutils 1.写Excel 1 impo ...

  10. 团队nabcd(校园大事件)

    我们团队项目名称是TD校园通,作为辅助功能校园大事件,一样是一个亮眼的功能. 我们的大事件功能主要解决了大家qq微信群聊过多,信息杂,很多时候错过了校园内的大事件,错失了好的活动的痛苦. 我们计划在主 ...