惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
A
About on SuperTechFans
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
雷峰网
雷峰网
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
IT之家
IT之家
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
博客园 - 聂微东
B
Blog RSS Feed
H
Help Net Security
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
D
DataBreaches.Net
L
LangChain Blog
Vercel News
Vercel News

博客园 - 新西兰程序员

C++ 构造函数中的初始化参数列表initializer list C++中的线程thread,以及C++11中的std::atomic学习 Leetcode56 Merge Intervals 合并区间 -- C++实现 C++中的内存对齐 C++中的static关键字使用以及全局变量 C++17中的结构化绑定Structured Binding C++中的函数参数是指针类型, 是按值传递 C++中异常处理机制中的栈展开stack unwinding C++实现链表反转 Linux中的性能分析工具 perf 来分析C++性能 QT中的元对象系统 Leetcode 114 - 二叉树展开为链表 Leetcode65 有效数字 - 判断给定的字符串是否是一个有效数字 LettCode2289-Steps to Make Array Non-descreasing C#中的委托详解 C++中的std::function C++中的仿函数Functor C++中的const和constexpr异同比较 C++中的左值和右值,以及右值引用,移动语义 C++中传递参数是指针类型以及传入参数是指针的指针(**)详解 C++中GetTickCount函数学习 C++中以类的成员函数作为Windows callback函数需要设置成static函数 C#中的System.Security.SecureString学习 C++中的悬挂指针和野指针 C++中四种不同的对象生存方式(in stack, in heap, global, local static) C#中使用Parallel类来进行多线程并发编程 String类型转LPCTSTR -----理解C++中的字符串类型转换 C++中的虚函数和虚函数表 C++中基类指针指向派生类对象 数据结构 - 栈的学习
C++17中新建一个类时,编译器默认生成的类成员函数
新西兰程序员 · 2026-04-10 · via 博客园 - 新西兰程序员

在C++17中,如果你不显示的声明构造函数和赋值函数时,编译器会自动生成6个核心特殊成员函数:

1.  默认构造函数: 无参构造

2.  析构函数: 清理资源

3. 拷贝构造函数: 用同类的对象来初始化新的对象

4. 拷贝赋值运算符: 对象之间赋值

5. 移动构造函数(C++11/17 新增):  转移对象资源

6. 移动赋值运算符(C++11/17 新增): 转移赋值

我们来看一个例子, 我们新建一个空类Person

#include <iostream>
using namespace std;

//空类,没有一行代码
class Person
{
     // 编译器会自动生成上面6个函数
}

编译器为上面Person这个空类,大概会生成以下6个成员函数

class Person
{
    public:

             // 1. 默认构造函数
             Person() = default;

             //2. 析构函数
             ~Person() = default;

             //3. 拷贝构造函数
             Person(const Person&) = default;

             //4. 移动构造函数
             Person(Person&&) = default;

             //5. 拷贝运算符
             Person& operator= (const Person&) = default;

              //6. 移动运算符
              Person& operator= (Person&&) = default;
             

}