专业编程基础技术教程

网站首页 > 基础教程 正文

C++类的默认函数 c++默认函数类型

ccvgpt 2024-10-12 13:51:22 基础教程 6 ℃

在C++中,类的8个默认函数:

1.默认构造函数;

C++类的默认函数 c++默认函数类型

2.默认析构函数;

3.默认拷贝构造函数;

4.默认移动构造函数;

5.默认赋值运算符重载函数;

6.默认移动赋值运算符重载函数;

7.默认取址运算符重载函数;

8.默认取址运算符const重载函数;

只是声明一个空类,不做任何事情的话,编译器会自动为我们生成的函数,即默认创建;下面我们就分别看一下这8个默认函数的原型以及注意事项:

class A

{

public:

//1. 默认构造函数

A();

//2. 默认析构函数

~A();

//3. 默认拷贝构造函数

A(const A&);

//4. 默认移动构造函数

A(A&&);

//5. 默认赋值运算符重载函数

A& operator = (const A&);

//6. 默认移动赋值运算符重载函数

A& operator = (const A&&);

//7. 默认取址运算符重载函数

A* operator &();

//8. 默认取址运算符const重载函数

const A* operator &() const;

}

如果不希望默认添加的话,如不希望对象被显示构造或赋值,可以将对应函数声明为private,C++11新增标识符 default 和 delete,控制这些默认函数是否使用。

default:被标识的默认函数将使用类的默认行为,如:A() = default;

delete:被标识的默认函数将禁用,如:A() = delete;


另外使用中记得注意:

1.默认构造函数:在自定义类不定义构造函数的情况下会默认添加,如果有定义构造函数则不会;默认不含任何参数的空函数,啥也不干;

2.默认析构函数:默认无参啥也不干;

3.默认拷贝构造函数:浅拷贝(即:逐字节拷贝);

4.默认移动构造函数:对于内置类型成员浅拷贝,对于自定义类型,看其是否实现了移动构造函数。实现了就用其的移动构造函数,没实现就用拷贝构造函数。

5.默认赋值运算符重载函数:浅拷贝,避免自赋值;

6.默认移动赋值运算符重载函数:对于内置类型成员浅拷贝。对于自定义类型,如果其实现了移动赋值重载,就调用。如果没有实现,就调用其拷贝赋值函数。

7.默认取址运算符重载函数:函数内部直接return this,一般使用默认即可;

8.默认取址运算符const重载函数:函数内部直接return this,一般使用默认即可;


其他更多使用注意事项,请关注并欢迎留言交流;

最近发表
标签列表