首页 > 其他分享 >拷贝构造函数

拷贝构造函数

时间:2024-05-24 18:11:37浏览次数:23  
标签:函数 对象 编译器 类型 拷贝 构造函数

简介

是一个特殊的构造函数,只有一个形参,该形参常用const修饰,是对该类型的引用。
当定义一个新的对象并用一个同类型的对象对它进行初始化时,用显式拷贝构造函数。
当该类型的对象传递给函数或从函数返回类型的对象时,用隐式拷贝构造函数。

拷贝构造函数

拷贝构造函数通常用于:
1、通过使用另一个同类型的对象来初始化新创建的对象。
2、复制对象把它作为参数传递给函数。
3、复制对象,并从函数返回这个对象。

如果没有定义拷贝构造,但是调用了拷贝构造,那么编译器会自动生成一个默认的拷贝构造函数。
但是如果自己定义了拷贝构造函数,编译器则不再生成。

最常见形式如下:

classname (const classname& obj)
{
	//code here
}

标签:函数,对象,编译器,类型,拷贝,构造函数
From: https://www.cnblogs.com/H43724334/p/18211386

相关文章

  • 深拷贝和浅拷贝
    在JavaScript的世界里,数据的复制分为两大类:浅拷贝(ShallowCopy)和深拷贝(DeepCopy)。理解它们之间的区别对于编写高效、稳定的代码至关重要。想象一下,如果你正驾驶着一艘太空船穿梭在数据宇宙中,浅拷贝就像是星际尘埃轻轻掠过,而深拷贝则是彻底的星系迁移。......
  • Ubuntu下(跨机)文件、文件夹的拷贝、删除、重命名、移动、备份
    同机操作拷贝命令格式:cp-r源文件目的文件1示例操作:cp-r/home/folderA/usr参数r是指连同源文件中的子目录一同拷贝,就把folderA拷贝到了usr下面2示例操作:cp-r/home/folderA/*/usr/folderA操作将文件夹/home/folderA下面的所有文件全部拷贝到了/usr/folderA......
  • Java的深浅拷贝认识
    目录浅拷贝深拷贝分辨代码里的深浅拷贝在Java中,深拷贝和浅拷贝是对象复制的两种方式,主要区别在于对对象内部的引用类型的处理上。浅拷贝定义:浅拷贝是指创建一个新的对象,但这个新对象的属性(包括引用类型的属性)仍然指向原来对象的属性。换言之,如果原对象中的属性是一个引用类型......
  • 不同场景下的构造函数调用
    本文为对不同场景下的构造函数调用进行跟踪。构造函数默认情况下,在C++之后至少存在六个函数默认构造/析构函数,复制构造/复制赋值,移动构造/移动赋值。以下代码观测发生调用的场景#include<iostream>structFoo{Foo():fd(0){std::cout<<"Foo::Foo()this="<<......
  • c++ 结构体的构造函数
    结构体中构造函数1、不使用构造函数1#include<iostream>23structstudent{45intage;6std::stringgender;78}Liu;910intmain(){11Liu.age=20;12Liu.gender="man";1314std::cout<<Liu.age<......
  • Java 中的深拷贝和浅拷贝你了解吗?
    前言Java开发中,对象拷贝是常有的事,很多人可能搞不清到底是拷贝了引用还是拷贝了对象。本文将详细介绍相关知识,让你充分理解Java拷贝。一、对象是如何存储的?方法执行过程中,方法体中的数据类型主要分两种,它们的存储方式是不同的(如下图):基本数据类型:直接存储在栈帧的局部变......
  • 文件拷贝脚本
    #include<FileConstants.au3>#include<Array.au3>Global$sourceFolder="G:\test_bak"Global$destinationFolder="G:\select"Global$listFilePath="G:\list.txt"Global$logFilePath="G:\search_log.tx......
  • 结构体中的指针&&拷贝赋值构造函数改造
    带有成员指针的结构体的拷贝1.问题使用结构体时,在析构时发生了**重复释放指针**的错误。2.原因定义了QList<结构体>,使用append添加结构体对象并未此结构体中的指针分配了空间,append会执行值拷贝,此时会创建新的副本添加进QList中,值得注意的是:append执行拷贝时并不会分配地......
  • 关于浅拷贝和深拷贝中需要注意的点
    -拷贝函数的调用时机//1.直接以创建好的对象初始化Personp1(20);Personp2(p1);//2.以值传递的方式Personp;doWork(p);//3.以值方式返回局部变量Personp1;returnp1;//局部变量,并不是返回上一行的p1,而是拷贝一个返回-情况:当成员中需要在堆上申请空间时。当构造......
  • java中的拷贝
    目录1.浅拷贝(只拷贝原对象的地址)2.深拷贝(拷贝原对象的所有值)深拷贝的方式这里说的拷贝主要是针对引用类型,而对于基本数据类型,拷贝就是直接把值给另一个对象1.浅拷贝(只拷贝原对象的地址)原对象的值发生变化,拷贝对象的值也会随之发生变化,因为原对象和拷贝对象是同一块空间/......