【温故而知新】C和C++3:函数

简介: 1、类的构造函数、析构函数和赋值函数:分别用于处理对象的创建、销毁和赋值操作 构造函数和析构函数有固定的函数名(与类名相同,析构函数前面再加上~),都没有返回值。

1、类的构造函数、析构函数和赋值函数:分别用于处理对象的创建、销毁和赋值操作

构造函数和析构函数有固定的函数名(与类名相同,析构函数前面再加上~),都没有返回值。

可以重载多个构造函数,分别传入不同的参数形式,以不同的方式创建对象。C++默认生成一个不带参数的构造函数,如果不需要特殊处理则不需要人工实现该函数。

在实现派生类的构造函数时,必须同时也为基类指定某个构造函数,否则编译器找不到响应的构造函数将会报错。

类的内部包含某个对象作为数据成员,而且存在某个基类时,构造函数的形式较为复杂。为了便于理解可以考虑将数据成员对象的构造放在函数体内实现,在声明构造函数是仅考虑基类的构造。

析构函数比较简单,该函数不允许带参数,不允许重载,也不能为私有类型。主要在析构函数中实现一些收尾工作,比如释放其他方法在堆内存中申请的空间等。析构函数可以被声明为虚函数,虚析构函数主要作用是使用delete函数删除对象是确保调用到正确的一个析构函数。

关于构造和析构的顺序,构造一个类的时候先调用基类后调用派生类的构造函数,析构的时候刚好相反。


2、类的拷贝构造函数和赋值函数

这两个函数不同。拷贝构造函数可以认为是构造函数的一种,用于在一个已经存在的基础上构建新的对象;赋值函数则直接对一个对象按照另一个对象进行呢按位赋值。如果类存在指针变量,直接赋值会造成浅拷贝和内存泄露,此时应用拷贝构造函数进行进一步处理防止此类问题。


3、内联函数和友元函数

内联函数用于以更高效率的方式执行对函数的调用操作。通常可以将被频繁调用的函数设置为内联函数,这样该函数将在编译的时候把代码写入目标程序中,而普通函数是在运行时调用。定义内联函数只需要在函数的定义之前加关键字inline。内联函数中不能使用循环和switch语句。

友元是一种突破类的封装性的机制,可以设置友元函数和友元类来授权其在本类的外部访问私有成员。必须要本类的授权才有效,其他类或函数无权“自封”为某个类的友元。

目录
相关文章
|
1月前
|
C++
C++ 数学函数、头文件及布尔类型详解
C++ 支持数学操作,如`max`和`min`函数找最大值和最小值,以及`<cmath>`库中的`sqrt`、`round`等数学函数。`bool`类型用于布尔逻辑,取值`true`(1)或`false`(0)。布尔表达式结合比较运算符常用于条件判断,例如在`if`语句中检查年龄是否达到投票年龄。在代码示例中,`isCodingFun`和`isFishTasty`变量分别输出1和0。
123 1
|
1月前
|
算法 C++ 容器
C++中模板函数以及类模板的示例(template)
C++中模板函数以及类模板的示例(template)
|
2月前
|
存储 设计模式 安全
【C++ 软件设计思路】多角度探索C++事件处理:以‘handlePowerEvent’函数为例
【C++ 软件设计思路】多角度探索C++事件处理:以‘handlePowerEvent’函数为例
85 2
|
23小时前
|
存储 编译器 C++
【C++】内存管理和模板基础(new、delete、类及函数模板)
【C++】内存管理和模板基础(new、delete、类及函数模板)
12 1
|
6天前
|
存储 C++
c/c++宏定义(函数)
c/c++宏定义(函数)
|
8天前
|
编译器 C++
【C++进阶】引用 & 函数提高
【C++进阶】引用 & 函数提高
|
13天前
|
C++
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
|
13天前
|
存储 C++
C++从入门到精通:2.1.1函数和类
C++从入门到精通:2.1.1函数和类
|
20天前
|
机器学习/深度学习 定位技术 C++
c++中常用库函数
c++中常用库函数
39 0
|
22天前
|
算法 搜索推荐 C++
浅谈sort函数底层(一道c++面试的天坑题)
浅谈sort函数底层(一道c++面试的天坑题)