C++ 24 之 拷贝构造函数

c24拷贝构造函数.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++ 拷贝构造函数

    2024-06-13 20:42:02       39 阅读
  2. C++ 拷贝构造函数

    2024-06-13 20:42:02       34 阅读
  3. C++拷贝构造函数介绍

    2024-06-13 20:42:02       34 阅读
  4. [C++] 拷贝构造函数 && 深拷贝、浅拷贝

    2024-06-13 20:42:02       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-13 20:42:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-13 20:42:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-13 20:42:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-13 20:42:02       18 阅读

热门阅读

  1. 标准化数据

    2024-06-13 20:42:02       6 阅读
  2. 使用nmcli命令创建、删除bond

    2024-06-13 20:42:02       6 阅读
  3. 《阅读的方法》读后感——超越期待的收获

    2024-06-13 20:42:02       5 阅读
  4. 华为数通——奇偶数子网划分与流量控制(QoS)

    2024-06-13 20:42:02       7 阅读
  5. 中介子方程十四

    2024-06-13 20:42:02       4 阅读
  6. 仲恺ZK——信计专业《软件体系结构》复习总结

    2024-06-13 20:42:02       6 阅读
  7. Web前端知道:深入探索与无尽挑战

    2024-06-13 20:42:02       6 阅读
  8. TCP协议

    TCP协议

    2024-06-13 20:42:02      8 阅读