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();
    }
  • 相关阅读:
    MYSQL—— 基础入门,增、删、改、查(基础篇)
    作为测试你不可不知的iOS与Android差异点!
    MYSQL—— Insert的几种用法!
    mysql 使用Navicat Lite如何打开‘查询编辑器’,使用sql语句对表进行操作!
    mysql基础总结
    C#中的DllImport
    StructLayout特性
    c++中指针类型在c#中怎么对应?
    c++/java/c# 几种编程语言的指针、引用比较
    如何在C#中模拟C++的联合(Union)?[C#, C++] How To Simulate C++ Union In C#?
  • 原文地址:https://www.cnblogs.com/xiaozoui11cl/p/12765893.html
Copyright © 2011-2022 走看看