c++学习笔记--拷贝构造函数

拷贝构造函数(C++学习笔记 25) 一、拷贝构造函数的基本概念 拷贝构造函数是一种特殊的构造函数。其形参是本类对象的引用。 拷贝构造函数的作用:在建立一个新对象时,使用一个已经存在的对象去初始化这个新对象。例如: Point p2(p1); 其作用是,在建立新对象p2时,用已经存在的对象p1去初始化新对象p2,在这个过程中就要调用拷贝构造函数。 拷贝构造函数的特点: 1、因为该函数也是一种构造函数,所以其函数名与类名相同,并... 阅读详情

同一个类的对象在内存中有完全相同的结构,如果作为一个整体进行复制或称拷贝是完全可行的。这个拷贝过程只需要拷贝数据成员,而函数成员是共用的(只有一份拷贝)。在建立对象是可用同一类的另一个对象来初始化该对象,这时所用的构造函数称为拷贝构造函数。

四少:构造函数,拷贝构造函数,赋值函数,析构函数

#include <iostream>

using namespace std;

class Test
{
public:
    //Test t
    Test(int d = 0):data(d)
    {
        cout<<"create Test object:  "<<this<<endl;
    }

    //Test t1(t)
    Test(const Test &t)   //拷贝构造函数
    {
        cout<< "copy create Test obeject:  "<<this<<endl;
        data = t.data;
    }
    //t3 = t1
    Test& operator=(const Test &t) //赋值语句
    {
        cout<<"Assign:"<< this<<"  = "<<&t<<endl;
        if(this != &t){
                data = t.data;
        }
        return *this;
    }

    //~t
    ~Test()
    {
        cout<<"free Test object:  "<<this<<endl;
    }

private:
    int data;
};

int main()
{
    Test t(10);
    Test t1(t);
    Test t2 = t1;  //调动 拷贝构造函数  //初始化

    Test t3;
    t3 = t1;      //赋值

    return 0;
}

这里写图片描述

拷贝构造函数的参数–采用引用。如果把一个真实的类对象作为参数传递到拷贝构造函数,会引起无穷递归。
系统会自动提供,称为缺省的按成员语义支持的拷贝构造函数,每个类成员被依次拷贝,称为缺省的安城员初始化。按成员作拷贝是通过依次拷贝每个数据成员实现的,而不是对整个类对象按位拷贝。赋值运算符“=”称缺省的按成员拷贝赋值操作符,同类对象之间可以用“=”直接拷贝。
    通常按成员语义支持已经足够。但在某些情况下,它对类与对象的安全性和处理的正确性还不够,这时就要求类的设计者提供特殊的拷贝构造函数和拷贝赋值操作符的定义。

Test t1 (10);
Test t2  = t1;
<==>
Test t2(t1) ;  //初始化

默认拷贝构造函数 工作:把类的成员按对应方式一一进行拷贝赋值.

3种拷贝构造函数的使用:
1.对象初始化对象
2.当函数的形参是类对象,调用函数时,进行形参于实参拷贝到新对象种。
3.当函数的返回值是类对象,函数执行完成返回调用者时使用。理由也是要建立一个临时对象中,再返回调用者。
   因为局部对象在离开建立他的函数时就消亡了,不可能在返回调用函数后继续生存,所以在处理这种情况时,编译系统会在调用函数的表达式中创建一个无名临时的对象,该临时对象的生命周期只是在函数调用处的表达式中。所谓retrun对象,实际上时调用拷贝构造函数把该对象的值拷入临时对象。如果返回的是变量,处理过程类似,只是不掉用构造函数

Test fun(Test x)
{
       int value ;
       value = x.getdata();
       Test tmp(value);
       return tmp;
}
PyTorch实战:从零构建CNN图像分类模型 卷积神经网络(CNN)作为计算机视觉的核心架构,通过局部连接和权值共享机制高效处理图像数据。其核心组件包括卷积层、池化层和全连接层,其中PyTorch的动态计算图特性为CNN实现提供了灵活的开发环境。在工程实践中,使用CIFAR-10这类标准数据集可以快速验证模型性能,而数据增强和批归一化等技术能有效提升模型泛化能力。通过PyTorch实现CNN不仅能够掌握图像分类的基本原理,还能为后续迁移学习和复杂视觉任务打下基础,特别是在结合Adam优化器和学习率调度策略后,模型收敛速度和准确率都能得到显著提升。 阅读详情

相关推荐

《解锁GCC版本选择的奥秘:从入门到精通》

GCC 版本的选择是一项复杂而关键的决策,犹如一场精心策划的战略布局,贯穿于软件开发的整个生命周期。从项目需求与兼容性的深度考量,到性能与稳定性的权衡抉择,再到硬件与系统适配的精准对接,每一个环节都紧密相连,相互影响。在游戏开发行业,对性能的极致追求促使开发者青睐较新的 GCC 版本,以实现更流畅的游戏体验和更震撼的视觉效果;科学计算领域则依赖于 GCC 版本对复杂数学运算的高效优化,以应对大规模数据处理的挑战;嵌入式开发行业因硬件资源的限制和对稳定性的严苛要求,通常选择经过长期验证的稳定版本;

zheng_ruiguo的专栏 1415

MySQL聚集函数的使用

将一些行的数据运行某些函数,返回一个期望值。

AI论道的博客 1155

CST实战:变容二极管电容曲线提取全流程(附S参数设置技巧)

本文详细介绍了在CST Studio Suite中提取变容二极管电容-电压(C-V)曲线的完整实战流程。重点解析了S参数仿真的核心原理、DCFEED模块的正确配置、参数扫描的设置技巧,并探讨了集成SPICE模型进行精确仿真的方法,帮助射频工程师高效、准确地获取器件关键特性。

weixin_29237635的博客 529

C++ STL库复习(10)map

作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int、double 等)、使用结构体或类自定义的类型。 与此同时,在使用 map 容器存储多个键值对时,该容器会自动根据各键值对的键的大小,按照既定的规则进行排序。默认情况下,map 容器选用std::less排序规则(其中 T 表示键的数据类型),其会根据键的大小对所有键值对做升序排序。当然,根据实际情况的需要,我们可以手动指定 m

qq_24649627的博客 753

Android Geckoview实战:5分钟搞定JS与原生交互(附完整Demo代码)

本文详细介绍了在Android应用中使用GeckoView替代系统WebView,构建稳定高效的JavaScript与原生代码交互桥梁的实战方法。通过WebExtension架构,文章提供了从环境配置、扩展开发到Android端集成的完整步骤,并附有可运行的Demo代码,帮助开发者快速解决混合应用中的兼容性问题。

u5v6w7的博客 933

超聚变安装银河麒麟服务器系统ky10-server-x86

超聚变-通过BMC口进服务器管理界面如下图为BMC管理口:默认BMC口IP:https://192.168.2.100l浏览器打开网页,输入用户名和密码登陆后,如下图红框处,选择“启动虚拟控制台”——选择“HTML集成远程控制台”系统银河麒麟服务器系统ky10 server x86选择镜像文件X86架构我们一般选择下图2212版本选择启动方式:光驱重启出现安装图形化界面选装安装系统的磁盘系统安装盘选完后如下图,会置灰创建root密码开始安装系统首次进入,有协议界面。

zengliguang的专栏 5960

C++ 拷贝构造与拷贝赋值

[阅读原文] 这篇开始总结巩固下 C++ 的基础知识,一方面是用于做备忘,另一方面也是加深印象、发散思考。该系列也是从自己掌握不牢固的知识点开始写起,并不会尽全尽善,顶多就是记录一些零零碎碎的知识点而已,但是对于这些零碎的知识点会尽量做到这个点是全面完善的,话不多说,开搞。 拷贝构造 所谓拷贝构造就是使用一个已经构造好的类作为参数来构造另一个类,一般形式如下所示: class A; class B; A a = new A; B b = a; // 拷贝构造函数 B c(a); // 拷贝构造函数 拷

YellowMax 1618

基于 YOLOv26 的遥感图像目标检测系统:从原理到模型

本文介绍了基于YOLOv26的遥感图像目标检测系统。YOLOv26凭借端到端设计、轻量化架构和小目标优化能力,有效解决了遥感图像中多尺度目标、复杂背景、小目标检测等挑战。系统采用CSPDarknet骨干网络和FPN+PAN特征融合模块,通过MuSGD优化器和改进损失函数提升训练效果。文章详细阐述了数据预处理、模型训练流程和优化技巧,包括Tile推理和混合精度训练。系统支持多种部署方式,在CPU上推理速度提升43%,能实现高精度、实时性的遥感目标检测,适用于城市规划、农业监测等场景。

一键难忘的博客 566

C++ 学习(20)STL - map容器

本章主要学习map容器,包含构造函数、赋值、大小操作、交换、插入与删除、查找与统计、排序(降序)

ling1998的博客 1336

一文讲透 SAP VDM 命名里的前缀与后缀:看懂 I_、C_、A_,把 CDS 视图栈搭得又稳又好用

SAP S/4HANA 的 CDS 视图命名规范解析 摘要:本文详细解析 SAP S/4HANA 中 CDS 视图的 VDM 命名规范。通过前缀(如 I_、C_、R_)区分视图层级,后缀标记附加角色,结合 @VDM.viewType 注解形成完整语义体系。I_作为稳定接口层,C_面向特定场景裁剪,R_限定应用域内复用,A_提供远程 API 接口。命名规范使团队能快速识别视图用途、依赖关系和扩展边界,确保模型长期可维护性。文章结合制造业物料主数据、Fiori 应用等实际案例,说明如何通过规范命名构建清晰的视图

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 220

vue3 - vite报错TypeError: crypto.hash is not a function(vue3+vite启动运行提示错误,项目无法启动且打包报错失败,详细解决排查方案教程)

vue3 vite 报错,vue3+vite启动报错:TypeError: crypto.hash is not a function,创建vue3+vite项目时报错TypeError: crypto.hash is not a function,如何解决这个问题,VUE3+VITE报错crypto.hash,vue3运行报错,vite运行报错,vue3打包报错,vite打包报错,vue3新建项目无法运行,vue3 vite创建项目直接报错了,node版本不兼容,修改了node版本还是不行,依旧报错,一直

✅ 精选推荐文章 1万+

C++中的拷贝构造函数(复制构造函数)以及涉及的深拷贝和浅拷贝问题

C++中的拷贝构造函数以及深浅拷贝。

m0_73968399的博客 2857

两万字硬核指南!Python爬虫requests库从入门到精通:新手也能搞定所有爬取场景(附实战案例+避坑大全)

请求头是客户端发送给服务器的额外信息,比如User-Agent(浏览器类型)、Referer(来源页面)、Cookie(登录凭证)、(编码方式)等。Cookie是服务器存储在客户端的小型文本文件,包含用户的登录凭证、偏好设置等信息。浏览器会在每次请求时自动携带Cookie,服务器通过Cookie识别用户身份。代理IP是一个中间服务器,你的请求先发送到代理IP,再由代理IP发送到目标网站,目标网站只能看到代理IP的地址,看不到你的真实IP。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1496

C++学习笔记——拷贝构造函数

C++学习笔记——拷贝构造函数 一、什么是拷贝构造函数? 1、概念: 拷贝构造函数,又称复制构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其形参必须是引用,但并不限制为const,一般普遍的会加上const限制。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。 2、浅拷贝和深拷贝 (1)浅拷贝 所谓浅拷贝,指的是在对象复制时,只对对象中的数据成员进行简单的赋值,默认拷贝构造函数执行的...

每天八杯水的博客 439

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C++拷贝构造函数的学习笔记

这个东西还挺新鲜的,所以专门写文章记录一下: 拷贝构造函数: 是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。 它具有单个形参,该形参(常用const修饰)是对该类类型的引用。 当定义一个新对象并用一个同类型的对象对它进行初始化时,将显示使用拷贝构造函数。 当该类型的对象传递给函数或从函数返回该类型的对象时,将隐式调用拷贝构造函数。 C++支持两种初始化形式: 拷贝初始化 int a = 5; 和直接初始化 int a(5); 对于其他类型没有什么区别,

realliyuhao的博客 403

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C++ Primer Plus学习笔记之拷贝构造函数

C++ Primer Plus学习笔记之拷贝构造函数 1,什么是拷贝构造函数 拷贝构造函数有两个含义: 首先,它是一个构造函数,当创建一个新对象时,系统自动调用它; 其次,它将一个已经定义过的对象的数据成员逐一对应的复制给新对象; 如果一个类没有显式定义拷贝构造函数,C++编译器可以为该类产生一个缺省的拷贝构造函数。这个缺省的拷贝构造函数采用C的方式,将拷贝对象的内存一个字节一个字节的拷

奋起的Coder。。。 1540

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C++拷贝构造函数学习笔记

本博文源于C++基础,听说我的同学们还在学习C++。我反手送上一篇博文。博文创作的目的也基于此。今天学习拷贝构造函数。我们为什么使用拷贝构造函数呢?因为我们希望实现初始化同类型值,如果同类型是对象,那么拷贝构造就应运而生了。因此本博文就基于特地的拷贝构造函数应用场景:1、使用一个对象初始化另一个对象;2、 对象作为实参传递给函数参数。3、函数返回值为类对象,创建临时对象作为返回值。

执念斩长河 490

C++ 学习笔记 拷贝构造函数

定义了拷贝构造函数后也会使编译器不生成合成构造函数 若没有定义拷贝构造函数时,编译器会自动生成一个默认的拷贝构造函数,此函数会使对象每个成员变量逐一复制。 以下语句会调用拷贝构造函数: A { public: int a; int b; }; int main() { A test; A test1 = test; A test2(test); A...

hongtaya的博客 120

C++学习笔记——C++ 拷贝构造函数(5)

拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于: ~通过使用另一个同类型的对象来初始化新创建的对象。 ~复制对象把它作为参数传递给函数。 ~复制对象,并从函数返回这个对象。 如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。 拷贝构造函数的最常见形式如下: classname (const classname &obj) { // 构造函数的主体 } 在这里,obj 是一个对象引用,该对象是用于初

Half-up的博客 252

C++Cherno 学习笔记day12 [45]-[48] 拷贝构造函数、箭头操作符、动态数组、stdvector使用优化

也就是说,当我们想改变其中一个时,它同时改变了他们,因为它们指向同一个内存段。或者我们删除其中一个,会把两个都删除,因为指向同一个内存块。当你试图创建一个新的变量并给它分配另一个变量时,它和你正在创建的变量有相同类型。崩溃,我们真正需要做的是,分配一个新的char数组,来存储复制的字符串。而我们现在做的是复制指针,两个字符串对象完全指向相同的内存缓冲区。浅拷贝:不会去到指针的内容或者指针所指向的地方,也不会复制。当你把一个字符串赋值给一个对象时,这个对象也是一个字符串。拷贝:复制数据,复制内存。

Shirleyyy1的博客 450

复制与拷贝构造函数 in C++【C++学习笔记】

45复制与拷贝构造函数 in C++ 除了引用外,当编写一个变量被赋值给另一个变量的代码时,你总是在复制 🍅浅度复制(浅拷贝) class Entity { int *ptr; Entity(const int &temp) { ptr = new int(temp); } ~Entity() { delete ptr; } }; int main() { int temp = 1; Entity a(temp)

Mikey99的博客 253

C++语法学习笔记十二:拷贝构造函数

实例代码: #include <iostream> #include <string> #include <vector> using namespace std; class Tmpclass{ public: Tmpclass(){ std::cout << "调用了Tmpclass 类的构造函数 " << std::endl; } Tmpclass(Tmpclass &tmpclass){ std::cout

哲学天空的博客 252

C++学习笔记【二十一】—— 拷贝构造函数

定义 拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。 拷贝构造函数通常用于: 通过使用另一个同类型的对象来初始化新创建的对象。 复制对象把它作为参数传递给函数。 复制对象,并从函数返回这个对象。 如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。拷贝构造函数的最常见形式如下: //在这里,obj 是一个对象引用,该对象是用于初始化另一个对象的。 classname (const c

xiaodouhao123456的博客 343

C++学习笔记_5:拷贝构造函数

//拷贝构造函数 //拷贝构造函数是一种特殊的构造函数,其形参为本类的对象引用。   //作用:使用一个对象(参数指定的对象),去初始化一个正在被建立的同类型对象 //class 类名 //{ //public : // 类名(形参); //构造函数 // 类名(类名 &对象名);//拷贝构造函数 // ... //}; //类名:: 类名

gongyuan073的专栏 1055

C++primer 学习笔记13章 拷贝构造函数

拷贝构造函数 一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值。(参数可以是 const 引用,也可以是非 const 引用。 一般使用前者) 拷贝构造函数在几种情况下都会被隐式地使用。因此,拷贝构造函数通常不应该是explicit的 拷贝构造函数调用的情况 一个对象作为函数参数,以值传递的方式传入函数体 一个对象作为函数返回值,以值传递的方式从函数返回 一个对象用于给另外一个对象进行初始化(常称为赋值初始化)等号右侧对象拷贝到正在创建的对象中,如果需要还需进行类型转换(拷贝初始化

weixin_43471255的博客 522

C++ 学习笔记(7)拷贝构造函数

一些基础知识 #include&lt;iostream&gt; using namespace std; class Test{ public: //Test t; Test(int d = 0):data(d){ cout&lt;&lt;"Create Test Object:"&lt;&lt;this&lt;&lt;endl; } //Te...

Wonz 602
上一篇: c++学习笔记--引用
下一篇: 重建二叉树
龘麤三思
博客等级 码龄10年 11粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值