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

    背景介绍 Kubernetes(简称k8s)已成为目前业界容器编排的事实标准,其搭配Docker可建立非常高效便捷的高可扩展.高可用应用服务架构. Kubernetes的名字来自希腊语,意思是&quo ...

  2. 9.5、zabbix高级操作(2)

    4.zabbix的分布式监控: 使用zabbix-proxy主动方式(被动也可),使用zabbix-agent的主动方式(被动也可): Zabbix Server <- Zabbix Proxy ...

  3. 15、mysql事物和引擎

    15.1.数据库事物介绍: 1.什么是数据库事物:

  4. uniapp 微信小程序 打开文件

    uni.downloadFile({ url: item.url, success: (res) => { if (res.statusCode === 200) { uni.openDocum ...

  5. external-attacher源码分析(2)-核心处理逻辑分析

    kubernetes ceph-csi分析目录导航 基于tag v2.1.1 https://github.com/kubernetes-csi/external-attacher/releases/ ...

  6. MySql:mysql修改密码及配置远程连接

    通过配置文件修改 mysql5.7  mysql库下面的user表没有password字段无法修改密码,5.7版本已经不再使用password来作为密码的字段了  而改成了authentication ...

  7. Java:Java实例化(new)过程

    实例化过程(new) 1.首先去JVM 的方法区中区寻找类的class对象,如果能找到,则按照定义生成对象,找不到 >>如下2.所示 2.加载类定义:类加载器(classLoader)寻找 ...

  8. awk中printf的用法

    printf函数   打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表符并不能保证得到想要的输出,因此,可以用printf函数来格式化特别的输出. printf函数返 ...

  9. easyswoole实现线上更新代码

    众所周知,easyswoole作为常驻内存的框架,修改代码并不能直接生效,而是需要重启服务,那么,当你的easyswoole项目上线之后,该如何保证旧请求的同时去更新代码呢? nginx reload ...

  10. MySQL服务器 IO 100%的分析与优化方案

    前言 压力测试过程中,如果因为资源使用瓶颈等问题引发最直接性能问题是业务交易响应时间偏大,TPS逐渐降低等.而问题定位分析通常情况下,最优先排查的是监控服务器资源利用率,例如先用TOP 或者nmon等 ...