查询网站的外链,福州关键词排名推广,软件开发咨询服务,wordpress 固定导航目录一、访问控制 (可见性控制)1.private、public、protected关键字2.关键字示例1、关键字对类数据成员访问的限制3. 公有继承4. 私有继承5. 保护继承6. 私有继承和保护继承的区别二、抽象类与纯虚函数1.什么是抽象类2.抽象函数/纯虚函数3.抽象类示例一、访问控制 (可见性控制)… 目录一、访问控制 (可见性控制)1.private、public、protected关键字2.关键字示例1、关键字对类数据成员访问的限制3. 公有继承4. 私有继承5. 保护继承6. 私有继承和保护继承的区别二、抽象类与纯虚函数1.什么是抽象类2.抽象函数/纯虚函数3.抽象类示例 一、访问控制 (可见性控制)
1.private、public、protected关键字
1、the private and public keywords 1、说明数据及函数是否可以从类外面访问 2、私有成员只能在类内的函数访问 3、公有成员可被任何其他类访问 2、the **protected ** keywords 护属性的数据或函数可被派生类成员访问
2.关键字示例
1、关键字对类数据成员访问的限制
#include iostream
using namespace std;
class A {
public: // 访问属性int i;
protected:int j;
private:int k;
};
class B: public A { // 此public为派生方式
public: // 访问属性void display() {cout i endl; // OK, can access icout j endl; // OK, can access jcout k endl; // Error! cannot access k}
};
int main() {A a;cout a.i endl; // OK, can access a.icout a.j endl; // Error, cannot access a.jcout a.k endl; // Error, cannot access a.k
}3. 公有继承
公有继承的派生类定义形式
class Derivedpublic Base{ 派生类新成员定义; }; (1) 基类成员 在派生类中的访问属性不变。 (2) 派生类的成员函数 可以访问基类的公有成员和保护成员不能访问基类的私有成员; (3) 派生类以外的其它函数 可以通过派生类的对象访问从基类继承的公有成员, 但不能访问从基类继承的保护成员和私有成员。 4. 私有继承
私有继承的派生类定义形式 class Derivedprivate Base{ 派生类新成员定义; }; (1) 基类成员 在派生类中都变成 private。 (2) 派生类的成员函数 可以访问基类的公有成员和保护成员不能访问基类的私有成员; (3) 派生类以外的其它函数 不能通过派生类的对象访问从基类继承的任何成员。 5. 保护继承
保护继承的派生类定义形式 class Derivedprotected Base{ 派生类新成员定义; }; (1) 基类成员 公有成员和保护成员变成protected私有成员不变。 (2) 派生类的成员函数 可以访问基类的公有成员和保护成员不能访问基类的私有成员; (3) 派生类以外的其它函数 不能通过派生类的对象访问从基类继承的任何成员。 6. 私有继承和保护继承的区别 二、抽象类与纯虚函数
1.什么是抽象类
类太抽象以至于无法实例化就叫做抽象类。
2.抽象函数/纯虚函数
从继承链上来看 1、派生类时新类会越来越明确和具体 2、沿着派生类向父类移动类会越来越一般化和抽象 3、如果我们沿着继承链一直往上找遇到了一个类这个类十分抽象以至于无法实例化那么我们称这个类为抽象类。 成员函数应出现在哪个继承层次 假设有个Shape类它有两个派生类rectangle、circle rectangle、circle都可以求面积都有一个getArea()函数。 对于getArea()函数的放置我们有两个选择 1、放哪儿都行既可以放在基类Shape也可以放在子类中定义 2、Shape类定义中getArea()函数并且强制要求Shape的子类必须实现getArea() 对于第二种方法怎么实现强制要求呢C给出了抽象函数的概念 抽象函数(abstract function) 也被称为纯虚函数(pure virtual function) 抽象函数要求子类实现它 virtual double getArea() 0 ; //在Shape类中注意这里不是大括号而是替换为0纯虚函数的“纯”就体现于此 Circle子类必须实现getArea()纯虚函数才能实例化。 子类从基类将纯虚函数继承过来如果不进行重新实现这个函数那么此时的子类也将是一个抽象类不能实例化。 并且要在函数后面加上override表明是对抽象函数的覆写。
注意纯虚函数不需要定义函数体也不能定义函数体
3.抽象类示例