当前位置 : 主页 > 编程语言 > c语言 >

C++ ---->大类 ~~ 大对象 (中) __03

来源:互联网 收集:自由互联 发布时间:2023-09-06
各位好友,欢迎来到本期博客 !经过前几期的学习, 类 ~ 对象 ,正变得越来越有滋味 ! 如今,六大默认成员函数 ---还剩下两个重要的函数 --- 拷贝复制 与 赋值重载 下面,开战 拷贝

各位好友,欢迎来到本期博客 !经过前几期的学习, 类 ~ 对象 ,正变得越来越有滋味 ! 如今,六大默认成员函数 --->还剩下两个重要的函数 --->拷贝复制 与 赋值重载

下面,开战 拷贝复制 !

----->拷贝构造函数:只有单个形参,该形参是对本类 类型对象的引用(常用 const 修饰

意即,用 已经存在的类 -->类型对象创建对象时,由编译器自动调用 !

其实,前几次讲解 默认构造函数,最重要的还是其特性 !下面。来看看拷贝构造函数的特性 !

---->特性 :>

1. 拷贝构造函数是构造函数的一个重要的重载形式;

2. 拷贝构造函数的参数 有且只有一个 且必须是类 -->类型对象的引用,使用传值方式 编译器直接报错,因为会引发无穷递归调用 ;

3. 如果未显示定义,编译器会自动生成默认拷贝构造函数。默认拷贝构造函数对象 按照内存存储 以字节序完成拷贝

又称 -->浅拷贝,或者 值拷贝。

----->实现环节 --->初步探究:>

#include <iostream>
using std::cout;
using std::endl;


class Date
{
public:
			Date(int year = 2018, int month = 06, int day = 07)
      {
      	_year = year;
        _month = month;
        _day = day;
      }
      void Print()
      {
      	cout << _year << " - " << _month << " - " << _day << " - " << endl;
      }
      
      //拷贝构造函数
      Date(const Date& d)
      {
      	_year = d._year;
        _month = d._month;
        _day = d._day;
      }
private:
			int _year;
      int _month;
      int _day;
};

int main()
{
  Date d1;
  d1.Print();	// 显然此处, Date 类 并没有显示定义,则编译器会生成默认构造函数 --->特性 3
  
  Date d2(d1);
  d2.Print();	// 此处是 拷贝构造函数的运用 与打印
  
  Date d3(2023, 05, 07);
  d3.Print();	// 该处 已经显示定义, 则编译器不会再生成默认构造函数
  
  Date d5(d3);
  d5,Print();
	return 0;
}

为了方便好友们,有更好的观感体验,与更好的理解 !现附上有彩色的代码图样 :>

C++ ---->大类 ~~ 大对象 (中)  __03_即是 典型 亦然 精华

现 对上述部分 较为难以理解的点,进行讲解 !

----->以下是 正确用法:>

C++ ---->大类 ~~ 大对象 (中)  __03_拷贝复制函数 三大特性_02

----->以下是 错误用法 :>


C++ ---->大类 ~~ 大对象 (中)  __03_隐藏版 this 指针_03

为了便于好友们,更加理解 与 掌握 上述代码 !以下采用递归展开图 -->进行讲解 :>

各位好友,上述话语中,已经有答案了 !

上一篇:C语言函数大全-- s 开头的函数(4)
下一篇:没有了
网友评论