栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2021-10-24

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-24

c++复制构造函数

目录

c++复制构造函数

1 作用:

2 一般形式:

3 什么情况下使用

4 总结


1 作用:

                用已经生成的对象来初始化另一个同类的对象。

2 一般形式:

                类名(const 类名& obj)//为什么用const:因为复制构造函数只是复制对象,没必要改变传递过来的对象的值

                {

                        函数体

                }

        eg:

class One { //One类
public:
    One() :  x(0), y(0) {}//默认构造函数
    One(int a,int b) : x(a), y(b) {} //带参数的构造函数
    One(const One& two) : x(two.x), y(two.y) {}//复制构造函数
private:
    int x,y;
};
    

3 什么情况下使用

        (1)   用一个对象初始化另一个对象。

                tips:c++有两种初始化形式,复制初始化和直接初始化

                        复制初始化

                                        1 使用=

                                        2 总是调用复制构造函数

                        直接初始化

                                        1 将初始化放在()中 

                                        2 调用与实参匹配的构造函数

        eg:

One one1(10,100)
One one2=one1 //复制初始化
One one3(one1) //直接初始化

           (2)函数参数按值传递对象时或者函数返回对象时

                        当函数形参为对象类型(不是指针和引用)时,编译器调用复制构造函数产生一个实参对象副本传递到函数中。

                        同理,当以对象类型作为返回值时,编译器调用复制构造函数产生一个return语句中的值的副本返回到调用函数

           (3)根据元素初始化式列表初始化数组元素时

                        若没有为类类型数组提供元素初始化,则用默认构造函数初始化每个元素,但如果使用大括号的数组初值列表形式来初始化数组时,则使用复制初始化来初始化每个元素

4 总结

        有了复制构造函数,函数才可以传递对象和返回对象,对象数组(由对象组成的数组)才能用初值列表的形式初始化。

(课堂笔记)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/347053.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号