C++ 中的封装、继承

来源:互联网 发布:定时提醒软件 绿色 编辑:程序博客网 时间:2024/05/29 17:59

一、封装

        封装就是将抽象得到的数据和行为相结合,幸好曾一个有机的整体,将数据的源代码进行有机的结合,形成类。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,只需要通过外部接口,特定的访问权限来使用类的成员。封装可以隐藏实现细节,使代码模块化。

#include<iostream>using namespace std;class Student{public:    void setAge(int _age)    {        age = _age;    }    int getAge()    {        return age;    }    private:    int age;    string name;};
上面就对 Student类中的成员变量 age进行的封装


二、继承
      C++通过类派生机制来支持继承。被继承的类型称为基类,新产生的类为派生类活子类。保持已有类的特性而构造新类的过程称为继承。在已有类的基础上新增自己的特性而产生新类的过程称为派生。继承和派生的目的是保持已有类的特性并构造新类。继承的目的:实现代码重用。派生的目的:实现代码扩充。三种继承方式:public、protected、private。

      继承时的构造函数:(1)、基类的构造函数不能被继承,派生类中需要声明自己的构造函数;

        (2)、声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,自动调用基类构造函数完成;

        (3)、派生类的构造函数需要给基类的构造函数传递参数;

        (4)、当基类中声明有默认形式的构造函数或未声明构造函数时,派生类构造函数可以不向基类构造函数传递参数;

        (5)、若基类中未声明构造函数,派生类中也可以不声明,全采用缺省形式构造函数;

        (6)、当基类声明有带形参的构造函数时,派生类也应声明带形参的构造函数,并将参数传递给基类构造函数;

        (7)、构造函数的调用次序:A、调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右);B、调用成员对象的构造函数,调用顺序按照它们在类中的声明的顺序;C、派生类的构造函数体中的内容。


         继承时的析构函数:(1)、析构函数也不被继承,派生类自行声明;

        (2)、声明方法与一般(无继承关系时)类的析构函数相同;

        (3)、不需要显示地调用基类的析构函数,系统会自动隐式调用;

        (4)、析构函数的调用次序与构造函数相反。



         同名隐藏规则:当派生类与基类中有相同成员时:(1)、若未强行指名,则通过派生类对象使用的是派生类中的同名成员;

        (2)、如要通过派生类对象访问基类中被覆盖的同名成员,应使用基类名限定:基类名::数据成员名。


         虚基类:作用:(1)、主要用来解决多继承时可能发生的对同一基类继承多次而产生的二义性问题;

(2)、为最远的派生类提供唯一的基类成员,而不重复产生多次拷贝。


1 0
原创粉丝点击