1、被调用的3个时机:

(1)直接初始化或拷贝初始化;

(2)将一个对象作为一个实参传递,形参采用非指针或非引用的对象进行接收时(指针即指向了同一块空间,并未实现拷贝;而引用就是实参本身);

(3)函数的返回值是以值传递的形式返回。

2、举例说明:

#include <iostream>
using namespace std; class Test{
private:
int a;
int b;
static int count;
public:
Test(int i, int j): a(i), b(j){}
void print();
Test(Test &t);
void fun(Test t);
Test fun1();
};
int Test::count = 1;
void Test::print(){
cout<<"a = "<<a<<" b = "<<b<<endl;
} Test::Test(Test & t){
cout<<"第"<<count++<<"次拷贝构造函数被调用! "<<endl;
this->a = t.a;
this->b = t.b;
} void Test::fun(Test t){ // 关于情形2 需要注意的是:形参不能是引用或者不能是指针的对象
cout<<"a = "<<t.a<<" b = "<<t.b<<endl;
} Test Test::fun1(){ // 关于情形3 需要注意的是:返回类型不能是引用或者不能是指针的对象
this->a = this ->a ++;
this->b = this->b ++;
return *this;
} int main(int argc, char*argv[])
{
   Test t(1,2);
// 调用拷贝构造函数 情形1
Test t1(t);
// 调用拷贝构造函数 情形2
t1.fun(t);
t.print();
// 调用拷贝构造函数 情形3
Test t3 = t1.fun1(); // 注意这种情况不会调用重载赋值操作符 Test t; t = t1这种情况的赋值运算符是会被重载的
t3.print(); system("pause");
return 0;
}

输出结果:

【校招面试 之 C/C++】第4题 拷贝构造函数被调用的3个时机的更多相关文章

  1. 【校招面试 之 网络】第3题 HTTP请求行、请求头、请求体详解

    1.HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求报文: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE.HEA ...

  2. 【校招面试 之 网络】第2题 TCP的可靠传输、流量控制、滑动窗口

    1.可靠传输 (1)三次握手 TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接: (1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_S ...

  3. 【校招面试 之 网络】第1题 TCP和UDP

    TCP UDP1.TCP与UDP基本区别  (1)基于连接与无连接  (2)TCP要求系统资源较多,UDP较少:   (3)UDP程序结构较简单(头只有8个字节:源端口号.目标端口号.长度.差错)   ...

  4. 记2016腾讯 TST 校招面试经历,电面、笔试写代码、技术面、hr面,共5轮

    (出处:http://www.cnblogs.com/linguanh/) 前序: 距离  2016 腾讯 TST 校招面试结束已经5天了,3月27日至今,目前还在等待消息.从投简历到两轮电面,再到被 ...

  5. 墙裂推荐!2020Android阿里&腾讯&百度&字节&美团校招面试汇总

    基本情况 2021届硕士生,Android开发岗 此文主要是2020年年初春招实习的面试和正式校招面试经验汇总,最终校招拿到了腾讯,百度,美团等offer 主要包括阿里4面,腾讯实习4面和校招4面,字 ...

  6. 《剑指offer-名企面试官精讲典型编程题》读后感

    首先,不得不说这是一本好书!!! 我接触这本书是在学长的推荐下去看的,而且口碑还是挺好的一本书,豆瓣的评分也比较高,当我刚看了它,我就深深的爱上了这本书,到现在为止,我已经看了三遍这本书了,平时无聊时 ...

  7. 牛客网Java刷题知识点之构造函数可以调用一般函数,但是一般函数不可以直接调用构造函数

    不多说,直接上干货! 通过 牛客网Java刷题知识点之构造函数是什么.一般函数和构造函数什么区别呢.构造函数的重载.构造函数的内存图解 我们对构造函数有了一个比较清楚的认识,当我们在创建对象时,我们会 ...

  8. 【校招面试 之 C/C++】第33题 C++ 11新特性(四)之STL容器

    C++ 11新增array.forward_list(单链表).unordered_set.unordered_map集中容器.

  9. 【校招面试 之 C/C++】第32题 C++ 11新特性(三)之for关键字

    1.for循环的一般写法: int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i = 0; i < 10; i++) cout ...

随机推荐

  1. 关于win时间同步的解决方案

    将以下的批处理执行:net stop w32time sc config w32time start= auto net start w32time w32tm /config /update /ma ...

  2. jquery的相关应用

    1.jQuery获取鼠标事件源(万能) 1 //任意位置 2 3 $(document).ready(function(){ 4 5 $(document).click(function(){ 6 $ ...

  3. 哈希与位图(Hash and BitMap)

    Hash:哈希机制 BitMap:位图机制 目的:都是为了保证检索方便而设置的数据结构 对于大数据进行排序,由于内存限制,不可能在内存中进行,所以采取BitMap机制 为了在大数据中快速检索以及操作数 ...

  4. CSS属性 table 的 border-collapse 边框合并

    说明 该CSS属性用来设定表格的行和列的边框是合并成单边框,还是分别有各自的边框 separate 缺省值.边框分开,不合并.collapse 边框合并.即如果相邻,则共用同一个边框. 虽然在DIV+ ...

  5. nginx配置详解(转)

    Nginx 配置文件详解 user nginx ; #用户 worker_processes 8; #工作进程,根据硬件调整,大于等于cpu核数 error_log logs/nginx_error. ...

  6. 编译器错误消息: CS0016: 未能写入输出文件“c:/Windows/Microsoft.NET/Framework/v4.0.50727/Temporary ASP.NET Files/root .... 拒绝访问。

    此问题困扰良久,得终极解决方案 环境:windows 2008 server r2 + iis7 + .net framework4.5 解决:1. 错误信息中包含的目录“c:/Windows/Mic ...

  7. JQ树插件 — zTree笔记

    1.zTree作者很贴心的为使用者将不同功能的代码封装成不同的文件,方便大家尽量减少加载的代码量,如果基本全用到,则不必一个个引用,有一个文件“jquery.ztree.all.js”,包含了所有.如 ...

  8. Java 中 HashMap 初始化时赋值

      1.HashMap 初始化的文艺写法 HashMap 是一种常用的数据结构,一般用来做数据字典或者 Hash 查找的容器.普通青年一般会这么初始化:HashMap<String, Strin ...

  9. PL/SQL 的一些用法

    变量的声明,赋值,打印(declare是pl/sql里面的用法 variable是sql*plus里面的用法,variable相当于一个sql*plus环境的全局变量,declare里定义的是pl/s ...

  10. UVA350-水题

    #include<iostream> using namespace std; int main() { int c = 0; int Z, L, I, M; while (cin > ...