1. 需要注意的是,私有的成员和受保护的成员不能使用直接成员访问运算符 (.) 来直接访问。
2. 范围解析运算符:
:: 叫作用域区分符,指明一个函数属于哪个类或一个数据属于哪个类。
:: 可以不跟类名,表示全局数据或全局函数(即非成员函数)。
作用域符号::的前面一般是类名称,后面一般是该类的成员名称,C++为例避免不同的类有名称相同的成员而采用作用域的方式进行区分
如:A,B表示两个类,在A,B中都有成员member。那么
A::member就表示类A中的成员member
B::member就表示类B中的成员member
用于类外部定义函数。比如声明了一个类Box,类Box里声明了一个成员函数setLength(),但没有在类的声明里给出setLength的定义,那么在类外定义f时,就要写成void Box::setLength(),表示这个setLength()函数是类Box的成员函数
全局作用域符号:当全局变量在局部函数中与其中某个变量重名,那么就可以用::来区分如:
char zhou; //全局变量
void sleep(){
char zhou; //局部变量
char(局部变量) = char(局部变量) *char(局部变量) ;
::char(全局变量) =::char(全局变量) *char(局部变量);
}
3. 继承类
class derived-class: access-specifier base-class
前面的是新类,后面的才是基类,也就是 子类:权限 父类的形式。
- 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。
- 保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。
- 私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。
class Rectangle: public Shape
派生类(多继承):
class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
{
<派生类类体>
};
4. 虚函数与多态:
在父类中声明一个函数,子类中也声明了该函数名后,如果在子类调用该函数则会调用的父类的结果,因此如果要实现多态,需要先用virtual 关键字声明函数:
virtual ReturnType FunctionName(Parameter)
也有一个类似于Java中接口概念的纯虚函数,即不给出任何定义留到子类中,
virtual void funtion1()=0;
包含纯虚函数的类即为抽象类。