【C++】函数传一:函数类型

目录

一,普通函数

1.1 静态函数

1.2 const函数

1.3 static+const函数

1.4 宏函数

1.5 重载函数

二,与类相关函数

2.1 构造函数系列

2.1.1 默认构造函数

2.1.2 构造函数

2.1.3 默认拷贝(复制)构造函数

2.1.4 拷贝(复制)构造函数

2.1.5 赋值操作符

2.1.6 移动构造函数

2.1.7 移动赋值操作符

2.1.8 委托构造函数

2.2 析构函数

2.3 const成员函数

2.4 内联(inline)函数

2.5 虚函数和纯虚函数

2.6 static(静态)成员函数

2.7 友元函数

三,与结构体相关的函数

3.1 结构体的初始化函数

四,拓展

4.1 函数指针

4.2 回调函数

4.3 函数模板

4.4 std::function与std::bind


一,普通函数

1.1 静态函数

eg:static T Func(); // static修饰普通函数,主要是限定其链接性。

普通函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用,限定其链接性。

作用:

a,与其他文件里面的函数命名不会冲突。

b,防止其他CPP文件使用该函数。

1.2 const函数

const T Func(); // 修饰函数的返回值,有如下类型:const T*、const T&、const T

作用:

a,防止外界修改函数返回值

1.3 static+const函数

static const T Func(); // 见上述1.1节+1.2节

1.4 宏函数

#define Func(t1, t2) ((t2) - (t1))   // 注意t2和t1需要用括号括起来,原因

作用:

a,在预编译阶段,宏函数会直接展开,替换原有的代码,少了入栈出栈流程,减少栈内存

b,宏函数缺少了入参类型的校验,比较容易出错,一般建议小型函数使用。

拓展:C/C++宏连接符'##'和'#'的用法  (实际工程化代码经常使用到宏连接符)

1.5 重载函数

C++函数重载详解

二,与类相关函数

注意:下面的Func() 都为类的成员函数

2.1 构造函数系列

2.1.1 默认构造函数

如果程序员不手动编写类的构造函数,编译器自动会生成一个默认构造函数。

使用 = default,显示指示编译器生成默认构造函数 。

使用 = delete,禁止类的某个成员函数实现,一般使用在类的单例模式、unique_ptr中。

C++中的 =default和=delete

2.1.2 构造函数

程序员手写的普通构造函数。

C++ explicit关键字详解,防止隐式转换,与此对应的是 implicit,支持隐式转换。

2.1.3 默认拷贝(复制)构造函数

如果程序员不手动编写类的构造函数,编译器自动会生成一个默认拷贝(复制)构造函数。注意:如果涉及到内存资源的操作,默认构造函数只会进行浅拷贝,而不是深拷贝。

2.1.4 拷贝(复制)构造函数

Class(const Class& class)

如果涉及到内存资源的操作,需要完成深拷贝的操作。

C++拷贝构造函数详解

2.1.5 赋值操作符

Class& operator=(const Class& class);

C++复制构造函数和赋值符的区别

2.1.6 移动构造函数

移动构造-C++11

2.1.7 移动赋值操作符

C/C++编程:移动赋值运算符

移动构造函数和移动赋值运算符记得加上noexcept声明,否则编译器还是会调用拷贝构造函数,因为编译器认为不加noexpect是不安全的。

2.1.8 委托构造函数

委托构造函数(C++)

2.2 析构函数

注意:如果是基类,析构函数需要设置为虚函数。

c++为什么基类的析构函数要写成虚析构函数(也说明了构造函数不能为虚函数的原因)

2.3 const成员函数

void Func() const;   // 表示在该函数中不会修改类对象的成员变量值

注意:mutable修饰的成员变量可以在const成员函数中修改,某种意义上来说:破坏了const成员函数的规则。c++ 关键字 mutable

2.4 内联(inline)函数

(一)inline函数(摘自C++ Primer的第三版)

2.5 虚函数和纯虚函数

virtual void Func();  // 虚函数

virtual void Func() = 0;  // 纯虚函数

C++虚函数和纯虚函数的区别

2.6 static(静态)成员函数

static void Func(); // 类的静态成员函数,为类对象共有方法,一般采取 类名::函数名 调用该函数

静态成员函数和普通成员函数的区别

2.7 友元函数

[C++]友元函数

三,与结构体相关的函数

3.1 结构体的初始化函数

在设计结构体时,一般建议附带上结构体初始化函数,减少脏数据的影响。结构体初始化(构造函数法)

四,拓展

4.1 函数指针

在C语言中,函数指针通常用来实现面向对象编程,

C —— 函数指针

如何利用函数指针在c语言中实现面向对象编程

4.2 回调函数

深入理解:回调函数

4.3 函数模板

C++中的函数模板

4.4 std::function与std::bind

C++11 中的std::function和std::bind

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值