C++学习打卡
类成员的访问
C++的三大特性:封装,继承,多态
类与结构体的最大区别在于,类可以封装对象的行为,也就是函数
类分为数据成员和函数成员,这两者被称为对象的属性和行为
如果我们要对对象的行为和属性进行操控,就需要访问类的成员
访问类的成员不是随意的,这一点受到类中的权限控制,分为public,protect,private,
public:公共(无论类内类外都可以访问)
protect:家族私有(自己和自己的子类成员可以访问)
private:自己私有(只有自己的类成员可以进行访问)
在默认情况下,类的权限是private,而结构体的权限默认是public
关键字区域划分是直到出现下一个关键字为止
内联成员函数
内联成员函数关键字:inline
与普通成员函数不同,内联成员函数一般在类内定义,而普通成员函数一般在类内声明,类外进行定义(这个概念有些许争议,如果你没有分文件进行处理数据可能普通成员函数也在类内定义)
内联成员函数的时间花销一般比普通函数(注意是普通函数,包括了普通成员函数)更小
原因是内联成员函数在编译时就已经将代码插入到被调用点,在最终执行时不必要将函数重新进行调用。这使得内联成员函数很适用于一些小型计算,如普通的加减运算
内联成员函数的缺点:如果对内敛成员函数进行滥用,可能会导致代码膨胀,也就是说莫名奇妙多出一大段代码
与普通成员函数的区别
-
定义位置:
-
内联成员函数:定义在类定义内部。
-
普通成员函数:定义在类定义外部,通常在源文件中。
-
-
调用效率:
-
内联成员函数:可能被编译器内联展开,减少函数调用开销。
-
普通成员函数:通常不会被内联展开,每次调用都会执行函数调用的完整过程。
-
-
作用域:
-
内联成员函数:由于定义在类定义内部,可以直接访问类的私有和保护成员。
-
普通成员函数:定义在类定义外部,需要通过类的实例或指针来访问成员。
-
静态类成员
关键字:static
由于类成员分为数据成员和成员函数,也就有两种静态类成员
静态类成员属于类而不属于对象,静态类成员可以被所有对象所访问,调用方式可以通过类名直接进行访问,由于可以被所有对象所使用,所以需要初始化
静态成员函数的用途
-
初始化静态成员变量:
-
静态成员函数常用于初始化静态成员变量,因为静态成员变量属于类本身,而不是某个对象。
-
-
工具函数:
-
静态成员函数可以作为工具函数,提供与类相关的操作,但不需要访问对象的实例数据。例如,一个数学类可以提供静态成员函数来计算数学公式。
-
-
类级别的逻辑:
-
静态成员函数可以实现与类相关的逻辑,例如统计对象数量、管理全局状态等。
-
静态成员函数与普通成员函数的区别
-
普通成员函数:
-
属于类的对象,需要对象的上下文(
this
指针)才能访问非静态成员变量和非静态成员函数。 -
每次调用时,都需要一个对象实例。
-
-
静态成员函数:
-
属于类本身,不需要对象的上下文。
-
只能访问静态成员变量和其他静态成员函数。
-
可以通过类名直接调用,而不需要创建对象。
-
以上这段借鉴了kimi