• C++ 24 之 拷贝构造函数


    c24拷贝构造函数.cpp

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. using namespace std;
    4. class Person3 {
    5. private:
    6. int p_age;
    7. public:
    8. // 构造函数分类:
    9. // 按参数分类:1、有参 2、无参
    10. // 按类型分类:普通、拷贝(复制)
    11. Person3() {
    12. cout << "默认构造函数" << endl;
    13. }
    14. // explicit 防止使用隐式方法来实现构造函数
    15. explicit Person3(int age) {
    16. p_age = age;
    17. cout << "有参数的构造函数" << p_age << endl;
    18. }
    19. // 拷贝构造函数
    20. // 不能使用值传递,用引用传递;
    21. // 需要添加const,因为不允许进行修改!
    22. Person3(const Person3 &p) {
    23. p_age = p.p_age;
    24. cout << "拷贝构造函数" << p_age << endl;
    25. }
    26. ~Person3() {
    27. cout << "析构函数" << endl;
    28. }
    29. };
    30. // 单独的一个方法
    31. // 值传递本身就是拷贝一个副本再操作,所以会执行拷贝构造函数
    32. void send_val(Person3 p) {
    33. }
    34. int main(void)
    35. {
    36. // 调用方法:
    37. // 1、括号法
    38. Person3 p1; // 调用的是默认构造函数
    39. Person3 p2(18);
    40. Person3 p3(p2);// 用一个对象初始化另一个对象 会调用拷贝构造函数
    41. cout << "--------" << endl;
    42. //Person3 p11();// 无参不能加小括号 不能直接调用无参构造函数,因为编译器把它当做函数声明
    43. // 2、显示法
    44. Person3 p4 = Person3();
    45. Person3 p5 = Person3(22);
    46. Person3 p6 = Person3(p5);
    47. cout << "--------" << endl;
    48. Person3(66); // 注意:1、匿名对象 执行完毕后,立即释放,立即执行析构函数
    49. cout << "66的后面" << endl;
    50. cout << "--------" << endl;
    51. //注意:2、不要用拷贝构造函数初始化匿名对象
    52. //Person3(p5); // Person3 p5; 当做对象的实例化看待,报错重定义
    53. //3、隐式法: 不推荐使用,因为可读性非常差。
    54. //Person3 p7 = 10; // 相当于 Person3 p7 = Person3(10);
    55. //Person3 p8 = p7;// 相当于 Person3 p8 = Person3(p7);
    56. Person3 p9(29);
    57. // 值传递本身就是拷贝一个副本再操作,所以会执行拷贝构造函数
    58. send_val(p9); // 传了一个对象进去,同时触发了构造函数 p9也是值
    59. Person3 p10(18);
    60. Person3 p11(p10);
    61. return EXIT_SUCCESS;
    62. }

  • 相关阅读:
    AI艺术的背后:详解文本生成图像模型【基于 Diffusion Model】
    Charles简单压力测试
    MySQL数据库中表操作之增删改查(CRUD)
    js常用数组使用方法
    2022-8-21 第七小组 学习日记 (day45)周测
    通用ORM的设计与实现
    java基于Springboot+vue的学生公寓宿舍管理系统 elementui
    计算机网络——物理层(信道复用)
    常用git命令
    记一次京东前端面试被问到的题目
  • 原文地址:https://blog.csdn.net/LSG_Down/article/details/139663061