由于最近实习公司所在的部门主要语言是C++,于是系统的学习了C++相关语法,在此记录下自认为需要了解的知识点。
(一)C++引用 vs 指针
引用和指针很容易混淆,它们之间有三个主要的不同:
-
不存在空引用。引用必须连接到一块合法的内存。
-
一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
-
引用必须在创建时被初始化。指针可以在任何时间被初始化。
(二)C++的类访问修饰符
C++的访问修饰符包括public、protected、private。一个类可以有多个public、protected或private标记区域。成员和类的默认情况访问修饰符是private。
公有(public)成员:公有成员在程序中类的外部是可访问的。
私有(private)成员:私有成员变量或函数在类的外部是不可访问的,甚至不可查看的。只有类和友元函数可以访问私有成员。
受保护(protected)成员:受保护成员变量或函数与私有成员十分相似,但有一点不同,protected成员在派生类(即子类)中是可访问的。
继承中的特点
有public、protected、private三种继承方式,它们相应地改变了基类成员的访问属性。
- public继承:基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:public, protected, private。
- protected继承:基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:protected, protected, private。
- private继承:基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:private, private, private。
(三)C++ this指针
在C++中,每一个对象都能通过this指针来访问自己的地址。this指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。
友元函数没有this指针,因为友元函数不是类的成员。只有成员函数才有this指针。
(四)C++类的静态成员
如果把函数声明为静态的,就可以把函数与类的任何特定对象独立开来。静态成员函数即使在类对象不存在的情况下也能被调用,静态函数只要使用类名加范围解析运算符 :: 就可以访问。
静态成员函数只能访问静态成员数据、其他静态成员函数和类外部的其他函数。
静态成员函数与普通成员函数的区别
- 静态成员函数没有this指针,只能访问静态成员(包括静态成员变量和静态成员函数);
- 普通成员函数有this指针,可以访问类中的任意成员。