C++ 24 之 拷贝构造函数

c24拷贝构造函数.cpp

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>   
using namespace std;

class Person3 {
private:
	int p_age;
public:
	// 构造函数分类:
	// 按参数分类:1、有参  2、无参
	// 按类型分类:普通、拷贝(复制)

	Person3() {
		cout << "默认构造函数" << endl;
	}
	// explicit 防止使用隐式方法来实现构造函数
	explicit Person3(int age) {
		p_age = age;
		cout << "有参数的构造函数" << p_age << endl;
	}

	// 拷贝构造函数
	// 不能使用值传递,用引用传递;
	// 需要添加const,因为不允许进行修改!
	Person3(const Person3 &p) {   
		p_age = p.p_age;
		cout << "拷贝构造函数" << p_age << endl;
	}

	~Person3() {
		cout << "析构函数" << endl;
	}

};

// 单独的一个方法
// 值传递本身就是拷贝一个副本再操作,所以会执行拷贝构造函数
void send_val(Person3 p) {

}



int main(void)
{
	// 调用方法:
	// 1、括号法
	Person3 p1;   // 调用的是默认构造函数
	Person3 p2(18);
	Person3 p3(p2);// 用一个对象初始化另一个对象 会调用拷贝构造函数

	cout << "--------" << endl;
	//Person3 p11();// 无参不能加小括号 不能直接调用无参构造函数,因为编译器把它当做函数声明
	
	// 2、显示法
	Person3 p4 = Person3();
	Person3 p5 = Person3(22);
	Person3 p6 = Person3(p5);

	cout << "--------" << endl;

	Person3(66); // 注意:1、匿名对象    执行完毕后,立即释放,立即执行析构函数
	cout << "66的后面" << endl;

	cout << "--------" << endl;

	//注意:2、不要用拷贝构造函数初始化匿名对象
	//Person3(p5); // Person3 p5; 当做对象的实例化看待,报错重定义

	//3、隐式法: 不推荐使用,因为可读性非常差。
	//Person3 p7 = 10;  // 相当于 Person3 p7 = Person3(10);
	//Person3 p8 = p7;// 相当于 Person3 p8 = Person3(p7);


	Person3 p9(29);
	// 值传递本身就是拷贝一个副本再操作,所以会执行拷贝构造函数
	send_val(p9); // 传了一个对象进去,同时触发了构造函数  p9也是值

	Person3 p10(18);
	Person3 p11(p10);
	return EXIT_SUCCESS;
}
相关推荐
小坏坏的大世界1 小时前
C++ STL常用容器总结(vector, deque, list, map, set)
c++·算法
wjs20242 小时前
状态模式(State Pattern)
开发语言
我命由我123452 小时前
Kotlin 数据容器 - List(List 概述、创建 List、List 核心特性、List 元素访问、List 遍历)
java·开发语言·jvm·windows·java-ee·kotlin·list
liulilittle2 小时前
C++ TAP(基于任务的异步编程模式)
服务器·开发语言·网络·c++·分布式·任务·tap
励志要当大牛的小白菜3 小时前
ART配对软件使用
开发语言·c++·qt·算法
PAK向日葵4 小时前
【算法导论】如何攻克一道Hard难度的LeetCode题?以「寻找两个正序数组的中位数」为例
c++·算法·面试
爱装代码的小瓶子6 小时前
数据结构之队列(C语言)
c语言·开发语言·数据结构
Maybe_ch7 小时前
.NET-键控服务依赖注入
开发语言·c#·.net
超浪的晨7 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
终焉暴龙王7 小时前
CTFHub web进阶 php Bypass disable_function通关攻略
开发语言·安全·web安全·php