Effective C++学习笔记之copy构造函数和default函数和copy赋值函数(operator=)
1 、C++一个空的类里面一般默认的函数
比如我们写
class A {};
一般里面系统会给你哪些默认函数呢?
class A
{
public:A(){} //default函数~A(){} //析构函数A(const A& a) {} //copy构造函数A& operator= (const A& a) {} //copy assignment操作符
};
一般上面的函数都会有,而且是inline函数 。
A a1; //default构造函数
A a2(a1); //copy构造函数
a1 = a2; //copy assignment操作符
A a3 = a1; //copy构造函数
为什么这里A a3 = a1;是copy构造函数,一个新的对象定义,就一定有有构造函数出现,不可能是copy 赋值
我们这里可以这样理解A a3 = a1;和A a3(a1);是等价的,好了,我自己用代码测试下。
2 测试代码
#include <iostream>using namespace std;class A
{
public:A() {std::cout << "A(){}" << std::endl;}~A() {std::cout << "~A()" << std::endl;}A(const A& a) {std::cout << "A(const A&)" << std::endl;}A& operator= (const A& a) {std::cout << "A& operator=(const A& a)" << std::endl;}};int main()
{A a1;A a2(a1);a1 = a2;A a3 = a1;return 0;
}
3 运行结果
A(){}
A(const A&)
A& operator=(const A& a)
A(const A&)
~A()
~A()
~A()
Effective C++学习笔记之copy构造函数和default函数和copy赋值函数(operator=)相关推荐
- Effective C++ 学习笔记 第七章:模板与泛型编程
第一章见 Effective C++ 学习笔记 第一章:让自己习惯 C++ 第二章见 Effective C++ 学习笔记 第二章:构造.析构.赋值运算 第三章见 Effective C++ 学习笔记 ...
- HiveQL学习笔记(二):Hive基础语法与常用函数
本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...
- 【Effective C++ 学习笔记】
条款02:尽量以const,enum,inline替换 #define #define定义的常量也许从未被编译器看见,也许在编译器开始处理源码之前它就被预处理器移走了: #define不重视作用域,不 ...
- Effective C++学习笔记——构造/析构/拷贝运算
条款9:决不再构造和析构过程中调用virtual函数,包括通过函数间接调用virtual函数. 应用:想在一个继承体系中,一个derived class被创建时,某个调用(例如生成相应的日志log)会 ...
- 【C++学习笔记2】构造函数、析构函数、函数多态、抽象类、函数模板
这次笔记介绍构造函数.析构函数.函数多态.抽象类.函数模板 一.构造函数 1.在定义对象,构造函数程序将自动执行,他的类型跟类名一致 函数声明最好放在自己的类里面,这样才符合类的封装,也可以像下面一样 ...
- Effective c++学习笔记条款20:宁以 pass-by-reference-to-const替换pass-by-value
Prefer pass-by-reference-to-const to pass-by-value 这个问题在在C++是非常常见的.传值和传引用巨大的差别在于你所使用的参数是其本身还 ...
- 宁以pass-by-reference-to-const替换pass-by-value——effective c++学习笔记
宁以pass-by-reference-to-const替换pass-by-value(Prefer pass-by-conference-to-const to pass-by-value.) pa ...
- Java:Effective java学习笔记之 考虑实现Comparable 接口
Java 考虑实现Comparable 接口 考虑实现Comparable 接口 1.Comparable接口 2.为什么要考虑实现Comparable接口 3.compareTo 方法的通用约定 4 ...
- C++学习笔记-----不要在构造函数和析构函数中调用虚函数
考虑下面的程序: #include <iostream> using namespace std;class Base { public:Base() { cout << &q ...
最新文章
- BZOJ4475: [Jsoi2015]子集选取【找规律】【数学】
- 一、查看MVC4还是MVC5
- 洛谷P1057传球游戏题解
- 【效率】再见 Typora,这款 Markdown 编辑器开源又免费!
- python报错输出到日志_Python日志记录和子进程输出和错误流
- ElasticSearch-.net平台下c#操作ElasticSearch详解
- 巧用EditPlus包含VS2010网站项目资源
- Qt自定义事件实现及子线程向主线程传送事件消息
- 微软提出VLMo:用“模态混合专家”进行统一的视觉语言预训练!即将开源!
- 吃相难看!它又又又涨价了......
- activity 点击后传递数据给fragment_ViewModel+LiveData实现Fragment间通信
- 2018 开发者生态报告:Java 最流行,Go 最有潜力,JavaScript最常用
- Android 四大组件面试
- FPGA如何固化程序到EPCS之入门的理想教程
- Torch常用函数详解
- mysql jena rdf_Jena 操作 RDF 文件
- LDA的python实现之模型参数训练
- [latex] 页码起始页设置
- 原生Js导出Excel文件
- android中适配器的作用,适配器模式 在Android中的简单理解
热门文章
- 基于 gRPC 和 .NET Core 的服务器流
- .NET 中安全高效跨平台的模板引擎 Fluid 使用文档
- NET问答: 如何在 ASP.NET Core 的 .json 文件中读取 AppSettings ?
- ASP.NET Core 依赖注入-集成 Autofac
- ASP.NET Core 性能优化最佳实践
- 魔幻艰难的2020上半年!
- 一个static和面试官扯了一个小时,舌战加强版
- 使用有序GUID:提升其在各数据库中作为主键时的性能
- 【C#】设计模式的学习征途系列文章目录(2019版)
- .NET Core 3.0预览版7中的ASP.NET Core和Blazor更新