[C++]复制构造函数的定义格式和调用时机

1.复制构造函数定义形式

<类名>::<复制构造函数名>(const <类名>&<对象名>)

Test(const Test&t)

2.调用时机

(1)用类的已知对象定义该类的一个正在被创建的对象

  Test u;

  Test t = u;//调用复制构造

(2)对象作为实参传递给函数形参

  Test u;

  Test t(u);

(3)对象作为函数返回值

  Test u;

  Test fun()

  {

    Test t;

    return t;//调用复制构造

  }

时间: 2024-10-22 16:15:47

[C++]复制构造函数的定义格式和调用时机的相关文章

C++ Primer 学习笔记_54_类与数据抽象 --复制构造函数、赋值操作符

复制控制 --复制构造函数.赋值操作符 引言: 当定义一个新类型时,需要显式或隐式地指定复制.赋值和撤销该类型的对象时会发生什么– 复制构造函数.赋值操作符和析构函数的作用!      复制构造函数:具有单个形参,该形参(常用const修饰)是对该类类型的引用.当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式的使用复制构造函数:当将该类型的对象传递给函数或者从函数返回该类型的对象时,将隐式使用复制构造函数.     析构函数:作为构造函数的互补,当对象超出作用域或动态分配的对象被删除

复制构造函数 与 赋值函数 的区别(转)

转自:jihite 构造函数.析构函数.赋值函数是每个类最基本的的函数.每个类只有一个析构函数和一个赋值函数.但是有很多构造函数(一个为复制构造函数,其他为普通构造函数.对于一个类A,如果不编写上述四个函数,c++编译器将自动为A产生四个默认的函数,即: A(void)                                    //默认无参数构造函数 A(const A &a)                         //默认复制构造函数 ~A(void);         

复制构造函数 与 赋值函数 的区别

构造函数.析构函数.赋值函数是每个类最基本的的函数.每个类只有一个析构函数和一个赋值函数.但是有很多构造函数(一个为复制构造函数,其他为普通构造函数.对于一个类A,如果不编写上述四个函数,c++编译器将自动为A产生四个默认的函数,即: A(void)                                    //默认无参数构造函数 A(const A &a)                         //默认复制构造函数 ~A(void);                   

剑指offer:关于复制构造函数

1:首先参看代码: #include "stdafx.h" #include "iostream" using namespace std; class A { private: int value; public: A(int n) { value=n; } //A(A other)!!这是错误的 // 复制构造函数参数为类对象本身的引用,用于根据一个已存在的对象复制出一个新的该类的对象,一般在函数中会将已存在对象的数据成员的值复制一份到新创建的对象中 // 若没

C++内存分配与复制构造函数笔试考察

昨天晚上去参加笔试了,有两道题做错了,都是印象里面有概念,但是没有弄清楚它到底是怎么回事,原理是什么,导致题目打错,现总结一下. 一.C++内存分配笔试考察 问题考察如下,请先不要看答案,看看你能否做对,呵呵: 怎么样,晕了没?正确答案及解析如下: 解析:char p[] = "..."是一个数组,这个数组是局部变量.char *p = "...",是一个指针,这个指针指向一个字符串常量.区别在于:数组的话,字符串是存在这个数组里的,因为这个数组属于局部变量(存在栈

C++构造函数详解(复制构造函数)

转载自:http://www.cnblogs.com/raichen/p/4752025.html 更多内容详见:http://blog.csdn.net/lwbeyond/article/details/6202256 构造函数是干什么的 该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,故:构造函数的作用:初始化对象的数据成员. 构造函数的种类 1 class Complex 2 { 3 4 private : 5 double m_real;

复制构造函数

// 复制构造函数.cpp : 定义控制台应用程序的入口点.//复制构造函数:类(const 类&对象(随便起))/*Box(const Box&box){length = box.length;width = box.width;height = box.height;}*/ #include "stdafx.h"#include<iostream>using namespace std;class Box{private:    int length; 

对象做函数参数和函数返回值时,调用复制构造函数,构造函数,析构函数的情况

// 对象做函数参数和返回值.cpp : 定义控制台应用程序的入口点.//exit(0)表示正常退出程序,exit(0)表示异常退出 //在调用input时,编译器用对象A去创建了形参对象temp,调用了复制构造函数,对象A中的数据复制给了对象temp// 在input函数中,执行temp.set(s),为对象temp中数据成员str申请了动态储存空间,并设置了输入的字符串//并没有改变实参A中的数据成员str的储存空间,故在执行语句A.show()后输出的字符串并没有改变.在函数调用结束后 /

C++中复制构造函数被调用的三种情况

C++中的构造函数 c++中的构造函数分为构造函数,和复制构造函数,相比于构造函数,复制构造函数使用更加方便,快捷.构造函数可以有多个,二复制构造函数只能有一个,因为复制构造函数的参数只能是当前类的一个对象,参数表是固定的,无法重载,若用户没有定义自己的辅助构造函数,系统会自动生成一个复制构造函数,其作用是将参数的之赋予当前的对象.若用户自己定义了复制构造函数,系统则不会生成默认复制构造函数.用户自己定义的复制构造函数功能可以自己构造,不一定执行复制的功能. 复制构造函数同构造函数的功能大体相同