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=)相关推荐

  1. Effective C++ 学习笔记 第七章:模板与泛型编程

    第一章见 Effective C++ 学习笔记 第一章:让自己习惯 C++ 第二章见 Effective C++ 学习笔记 第二章:构造.析构.赋值运算 第三章见 Effective C++ 学习笔记 ...

  2. HiveQL学习笔记(二):Hive基础语法与常用函数

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  3. 【Effective C++ 学习笔记】

    条款02:尽量以const,enum,inline替换 #define #define定义的常量也许从未被编译器看见,也许在编译器开始处理源码之前它就被预处理器移走了: #define不重视作用域,不 ...

  4. Effective C++学习笔记——构造/析构/拷贝运算

    条款9:决不再构造和析构过程中调用virtual函数,包括通过函数间接调用virtual函数. 应用:想在一个继承体系中,一个derived class被创建时,某个调用(例如生成相应的日志log)会 ...

  5. 【C++学习笔记2】构造函数、析构函数、函数多态、抽象类、函数模板

    这次笔记介绍构造函数.析构函数.函数多态.抽象类.函数模板 一.构造函数 1.在定义对象,构造函数程序将自动执行,他的类型跟类名一致 函数声明最好放在自己的类里面,这样才符合类的封装,也可以像下面一样 ...

  6. Effective c++学习笔记条款20:宁以 pass-by-reference-to-const替换pass-by-value

    Prefer pass-by-reference-to-const to pass-by-value         这个问题在在C++是非常常见的.传值和传引用巨大的差别在于你所使用的参数是其本身还 ...

  7. 宁以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 ...

  8. Java:Effective java学习笔记之 考虑实现Comparable 接口

    Java 考虑实现Comparable 接口 考虑实现Comparable 接口 1.Comparable接口 2.为什么要考虑实现Comparable接口 3.compareTo 方法的通用约定 4 ...

  9. C++学习笔记-----不要在构造函数和析构函数中调用虚函数

    考虑下面的程序: #include <iostream> using namespace std;class Base { public:Base() { cout << &q ...

最新文章

  1. BZOJ4475: [Jsoi2015]子集选取【找规律】【数学】
  2. 一、查看MVC4还是MVC5
  3. 洛谷P1057传球游戏题解
  4. 【效率】再见 Typora,这款 Markdown 编辑器开源又免费!
  5. python报错输出到日志_Python日志记录和子进程输出和错误流
  6. ElasticSearch-.net平台下c#操作ElasticSearch详解
  7. 巧用EditPlus包含VS2010网站项目资源
  8. Qt自定义事件实现及子线程向主线程传送事件消息
  9. 微软提出VLMo:用“模态混合专家”进行统一的视觉语言预训练!即将开源!
  10. 吃相难看!它又又又涨价了......
  11. activity 点击后传递数据给fragment_ViewModel+LiveData实现Fragment间通信
  12. 2018 开发者生态报告:Java 最流行,Go 最有潜力,JavaScript最常用
  13. Android 四大组件面试
  14. FPGA如何固化程序到EPCS之入门的理想教程
  15. Torch常用函数详解
  16. mysql jena rdf_Jena 操作 RDF 文件
  17. LDA的python实现之模型参数训练
  18. [latex] 页码起始页设置
  19. 原生Js导出Excel文件
  20. android中适配器的作用,适配器模式 在Android中的简单理解

热门文章

  1. 基于 gRPC 和 .NET Core 的服务器流
  2. .NET 中安全高效跨平台的模板引擎 Fluid 使用文档
  3. NET问答: 如何在 ASP.NET Core 的 .json 文件中读取 AppSettings ?
  4. ASP.NET Core 依赖注入-集成 Autofac
  5. ASP.NET Core 性能优化最佳实践
  6. 魔幻艰难的2020上半年!
  7. 一个static和面试官扯了一个小时,舌战加强版
  8. 使用有序GUID:提升其在各数据库中作为主键时的性能
  9. 【C#】设计模式的学习征途系列文章目录(2019版)
  10. .NET Core 3.0预览版7中的ASP.NET Core和Blazor更新