c++学习之继承

来源:互联网 发布:兄弟连java 怎么样 编辑:程序博客网 时间:2024/05/20 16:13

        等到学习完c++的继承,发现c++和java差不多在继承设计上功能是差不多的,不过c++的继承分为public,protected,private三种类型。继承,顾名思义,就是子类拥有父类的一切。不过如下这三项不会被继承。首先是构造函数与析构函数,私有成员和方法,最后就是父类的友元不会被继承。

        再说说public继承,该方式会继承除了以上三项,其他都会继承的一种方式。

        protected继承,该方式会继承除了以上三项,外加public成员也不会被继承的一种方式。

        private继承,说白了,就是父类是父类,子类子类,什么都继承不了。private继承很坑爹呀...

        举个例子说明继承的使用吧。

        1 我们建立一个BaseClass.h的头文件,里面对父类BaseClass进行声明。

class BaseClass{protected:int x;int y;public:BaseClass();BaseClass(int a,int b);void area();};

        2 建立一个BaseClazz.cpp的源文件,里面是对父类BaseClass的完整定义。

#include <iostream>#include <string>#include "BaseClass.h"using namespace std;BaseClass::BaseClass(){x = 1;y = 2;}BaseClass::BaseClass(int a,int b){x = a;y = b;}void BaseClass::area(){cout << x*y << endl;}


        3 建立一个DerivedClass1.h的头文件,用来对子类进行声明。子类的名称叫DerivedClass1。

#include "BaseClass.h"class DeriveClass1:public BaseClass{private:int z;public:void area();void setValue(int a);};

        4 建立一个DerivedClass1.cpp的源文件,用来对子类进行完整定义。

#include <iostream>#include "DeriveClass1.h"using namespace std;void DeriveClass1::area(){cout << x*y*z << endl;}void DeriveClass1::setValue(int a){z = a;}

        5 好了,开始测试一下子类的功能吧。建立一个Main.cpp的文件。

#include <iostream>#include "DeriveClass1.h"using namespace std;int main(){DeriveClass1 dc;dc.setValue(3);dc.area();return 1;}

        6说明,dc.setValue()设置了成员函数z的值,area()函数打印了x*y*z的值。可想而知,结果应该是6。因为子类初始化的时候,父类的构造函数也是会运行的。

                            

        7 另外需要说明的是,c++是支持多重继承的。这里就不举例子了。





原创粉丝点击