美文网首页C++ 杂记
017 拷贝构造函数

017 拷贝构造函数

作者: 赵者也 | 来源:发表于2020-03-21 20:22 被阅读0次

如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数。

class Foo {
public:
    // 默认构造函数
    Foo();
    // 拷贝构造函数
    Foo(const Foo&);
};

拷贝构造函数的第一个参数必须是一个引用类型。虽然我们可以定义一个接受非 const 引用的拷贝构造函数,但此参数几乎总是一个 const 的引用。拷贝构造函数在几种情况下都会被隐式地使用。因此,拷贝构造函数通常不应该是 explicit 的。

合成拷贝构造函数

如果我们没有为一个类定义拷贝构造函数,编译器会为我们定义一个。与合成默认构造函数不同,即使我们定义了其他构造函数,编译器也会为我们合成一个拷贝构造函数。

在特殊情况下,合成拷贝构造函数用来阻止我们拷贝该类类型的对象。

一般情况下,合成的拷贝构造函数会将其参数的每个非 static 成员逐个拷贝到正在创建的对象中。

每个成员的类型决定了它如何拷贝:对类类型的成员,会使用其拷贝构造函数来拷贝;内置类型的成员则直接拷贝。虽然我们不能直接拷贝一个数值,但合成拷贝构造函数会逐元素地拷贝一个数组类型的成员。如果数组元素是类类型,则使用元素的拷贝构造函数来进行拷贝。

相关文章

  • 017 拷贝构造函数

    如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数。 拷贝构造函...

  • C++语言基础(02)

    1.可变参数 2.构造函数、析构函数、拷贝构造函数 构造函数 拷贝构造函数 //浅拷贝(值拷贝)问题 //深拷贝

  • C++面向对象高级编程(上)-第二周-博览网

    第二周 三大函数:拷贝构造,拷贝赋值,析构 字符串的构造函数,拷贝构造函数, 拷贝构造函数和拷贝赋值函数没有自主定...

  • (GeekBand)Second class

    一、Big Three:拷贝构造函数,拷贝赋值函数,析构函数 1.拷贝构造函数 文字定义:拷贝构造函数,又称复制构...

  • c++:拷贝构造函数&&深浅拷贝

    默认拷贝构造函数的汇编代码: 其实就相当于这一段代码 拷贝构造函数 多态拷贝构造函数 子类拷贝构造函数调用父类拷贝...

  • C++之构造进阶之拷贝构造

    拷贝构造函数的概述 拷贝构造函数的本质是构造函数。 调用拷贝构造的时机:旧对象给新对象初始化。 用户不提供拷贝构造...

  • 博览网--C++面向对象高级编程(上)-- C++学习第二周笔记

    一、拷贝构造, 拷贝赋值, 析构 Class 带指针 , 必须有拷贝构造和拷贝赋值函数 1) 拷贝构造函数: ...

  • C++boolan part1_week2

    Big Three三个特殊函数 (拷贝构造函数、拷贝赋值函数、析构函数) 1 拷贝构造函数 定义:如果一个构造函数...

  • c++11 拷贝控制

    拷贝控制操作包括,拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋值运算符,析构函数。拷贝和移动构造函数定义了用...

  • 20-拷贝构造函数

    拷贝构造函数(Copy Constructor) 拷贝构造函数,也是构造函数的一种。大家都知道,构造函数是在对象创...

网友评论

    本文标题:017 拷贝构造函数

    本文链接:https://www.haomeiwen.com/subject/iaukjctx.html