C++构造函数,复制构造函数和重载等号运算符怎么调用
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"C++构造函数,复制构造函数和重载等号运算符怎么调用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++构造函数,复制构造函数和重载等号
千家信息网最后更新 2026年11月03日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安全错误
数据库的锁怎样保障安全
有格互联网科技
互联网加科技
亿人帮互联网科技有限公司
互联网科技英文
亿账通互联网科技
苏州大垚互联网科技
互联网金融科技委员会
科技类的互联网平台
互联网科技类展会
深圳互联网科技怎么样
青岛中康互联网医疗科技有限公司
小米互联网科技园设置
武汉健翔互联网络科技有限公司
黑科技闪耀互联网之光
爱医互联网络科技
昆明中奇联合互联网科技
福州德业互联网科技
陕西彩京云互联网科技有限公司
优雇互联网科技有限公司
互联网的黑科技实验室
手磨咖啡
互联网加科技
科技金融是不是互联网金融
互联网金融监管科技数据
为想互联网科技
紫鲸互联网科技
深圳天众互联网科技公司
杭州披云加互联网科技有限公司
广东鹅鹅鹅互联网科技有限公司
互联网金融运营模式中的金融科技