C++构造函数,复制构造函数和重载等号运算符怎么调用
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容主要讲解"C++构造函数,复制构造函数和重载等号运算符怎么调用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++构造函数,复制构造函数和重载等号
千家信息网最后更新 2025年02月01日C++构造函数,复制构造函数和重载等号运算符怎么调用
本篇内容主要讲解"C++构造函数,复制构造函数和重载等号运算符怎么调用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++构造函数,复制构造函数和重载等号运算符怎么调用"吧!
前言:
初学C++发现了下面这个问题,其中Duck是一个已知的类,并以多种方式指定对象的值:
Duck d1();Duck d2(d1);Duck d3 = d1;Duck d4;d4 = d1;
问题在于,上述d1、d2、d3、d4是如何创建的呢?分别调用的哪个函数呢?
1、赋值和初始化的区别
C++中,赋值和初始化是两个不同的概念:
初始化是指对象创建之时指定其初值,分为直接初始化和复制初始化两种(一句);
赋值是指对象创建以后指定其值(两句);
对于上述d1、d2、d3、d4的创建来说,分别对应下述情况:
Duck d1(); // 直接初始化Duck d2(d1); // 复制初始化Duck d3 = d1; // 复制初始化Duck d4; // 未初始化d4 = d1; // 赋值
2、初始化和赋值分别调用哪个函数?
直接初始化时,参数为对象所需的值,此时调用构造函数;复制初始化时,参数是一个已存在的类对象,此时调用复制构造函数;赋值时,对象是已经定义好的,调用"重载的等号赋值操作",使用另一个对象的值计算出此对象的值。
Duck d1(); // 调用构造函数Duck d2(d1); // 调用复制构造函数Duck d3 = d1; // 调用复制构造函数Duck d4; // d4 = d1; // 赋值
需要特别注意的是下面两种方式都是初始化,而且都是调用的复制构造函数,容易误以为第二种方式是赋值:
Duck d2(d1);Duck d3 = d1;
3、编写测试类
对于上述Duck
类的初始化以及赋值方式,为了正确的测定每种情况分别调用了什么函数,下面的类中包含了构造函数、复制构造函数、重载等号赋值运算符函数:
class Duck{public: Duck() { cout << "constructing !!!" << endl; }; Duck(const Duck &d) { cout << "copying !!!" << endl; } Duck& operator=(const Duck &another);};Duck& Duck::operator=(const Duck &another) { cout << "operator= !!!" << endl; return *this;}
使用Section 1
和Section 2
中的各种方式指定对象的值时,可以方便的确定出各个函数的调用情况。
到此,相信大家对"C++构造函数,复制构造函数和重载等号运算符怎么调用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
函数
对象
等号
C++
方式
运算符
运算
情况
内容
参数
问题
学习
不同
实用
更深
两个
兴趣
初值
前言
多种
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
利用图书馆的数据库
2022年网络安全和信息化论坛
共建校园网络安全稿件
开源dhcp准入服务器
闵行区咨询软件开发服务费
买电脑还是买云服务器
什么人适合搞软件开发
电脑qq服务器拒绝了你发送文件
德阳鑫恒盛网络技术有限公司
重庆鲲鹏服务器价格是多少
榆树智能化网络技术售后服务
数据库解析sql失败
网络安全黑板报插画海报
大煌网络安全专业
网络安全和饭圈文化手抄报
苏州优才聚软件开发有限公司
文山住宿软件开发
小游戏服务器ip地址
如何开办软件开发公司
Oppo查找手机提示服务器异常
提取很多表格里的数据库
浙江数据库
网络安全 第五空间
北京浪潮服务器虚拟化部署服务器
组态软件开发系统
德阳鑫恒盛网络技术有限公司
守护网络安全板报
怎么修改短信数据库
网络安全课程的总结
监理软件开发公司