zoukankan      html  css  js  c++  java
  • 继承

    class B(子类):public(继承格式)  A (父类)

    在创建类B的对象的时候,会先构造父类对象,如果没有显性写,是使用默认构造函数,析构的时候是先析构子类,在析构父类

    创建子类的时候,可以在初始化列表指定调用父类的哪个构造函数

    子类继承父类的数据成员,父类的成员函数(代码的重用,体系(只要注意子类比父类多的成员/属性)),父类的私有的成员是无法继承的。如果父类公有成员函数有修改私有变量的值的函数,子类可以调用该函数来修改父类私有成员的值。

    继承格式:

    public:公有继承的时候 父类的所有数据成员属性在子类中不会发生变化

    protected:保护继承的时候,父类的公有数据成员和保护数据成员在子类中属性都变为保护数据成员

    privata:私有继承的时候,父类的公有数据成员和保护数据成员在子类中属性都变为私有数据成员

    class Parent
    {
    public:
        int public_data;
        Parent()
        {
            cout<<"Parent()"<<endl;
            this->public_data = 0;
            this->protected_data = 0;
            this->privata_data =0;
        }
        Parent(int i,int j,int k)
        {
            cout<<"Parent(int i,int j,int k)"<<endl;
            this->public_data = i;
            this->protected_data =j;
            this->privata_data =k;
        }
    
        void parentShowdata()
        {
            cout<<this->public_data<<endl;
            cout<<this->protected_data<<endl;
            cout<<this->privata_data<<endl;
        }
        void setPrivatadata(int a)
        {
            this->privata_data = a;
        }
    
    
        ~Parent()
        {
            cout<<"~Parent()"<<endl;
        }
    
    protected:
    int protected_data;
    private:
    int privata_data;
    };
    
    class Sub:public Parent
    {
    public:
        Sub()
        {
            cout<<"Sub()"<<endl;
            this->name = " ";
        }
    
        Sub(const string &name,int i=0,int j=0,int k=0):Parent(i,j,k)
        {
            cout<<"Sub(const string &name,int i=0,int j=0,int k=0):Parent(i,j,k)"<<endl;
            this->name = name;
        }
        void subShowdata()
        {
            cout<<this->name<<endl;
            this->parentShowdata();
        }
    
        ~Sub()
        {
            cout<<"~Sub()"<<endl;
        }
    
    private:
        string name;
    };
    
    int main(int argc, char *argv[])
    {
        Sub a("clshisunwukong",12,23,34);
        a.subShowdata();
        cout<<a.public_data<<endl;
    //    cout<<a.protected_data<<endl;  //子类无法访问父类的保护数据成员,私有也访问不了
        a.setPrivatadata(55);   
        a.subShowdata();
    }
  • 相关阅读:
    [Form Builder]POST 与 commit_form 的区别
    [Form Builder]Form中的validate验证事件
    [Form Builder]Oracle Form系统变量中文版总结大全
    [Form Builder]NAME_IN()与COPY()
    [Form Builder]APP_ITEM_PROPERTY.SET_PROPERTY 用法
    解决MVC模式文件下载附件中文名称乱码
    [ASP.NET MVC]笔记(四) UnobtruSive AJAX和客户端验证
    log4net的使用
    Linq 实现sql中的not in和in条件查询
    [ASP.NET MVC]笔记(三) 成员资格、授权和安全性
  • 原文地址:https://www.cnblogs.com/xiaozoui11cl/p/12765893.html
Copyright © 2011-2022 走看看