首页
社区
课程
招聘
[原创]c++ 学习系类[1]: private protected public三种继承方式探究
发表于: 2011-12-15 15:05 4309

[原创]c++ 学习系类[1]: private protected public三种继承方式探究

2011-12-15 15:05
4309

标 题: c++ 学习系类【1】: private protected public三种继承方式探究
作 者: dengxinsd

c++ 中子类与父类的关系有public 、protected、private 三种继承方式,这三种继承方式中,子类对父类的成员变量和成员函数的操作权限以及子类对象对父类的成员变量和成员函数的操作权限各不相同,下面一一说明先分析一下三种权限关系
public:
public 属性具有最大的权限,子类及使用该类构造的对象都能访问到。一般来说,public属性是提供给子类或对象访问的,。
protected:这是一种比较有特点的属性,声明这种属性的原因主要是子类对象访问的,当某个方法或变量声明为protected后,子类能够访问到该方法或变量,但子类对象不能访问到该变量的方法或变量。即protected方法对子类是public,对子类对象是private的。
private:这种属性是子类和子类对象都不所见的,这种方法会变量只有在类本身中才能调用。
上面这是在类对象本身的属性,下面将一下关于c++的继承的三种属性。
第一种:public继承public继承方式下,子类能够操作父类的public、protected属性的成员变量和成员方法,但却不能操作父类的private成员变量和方法。
子类的对象能够操作的是子类和父类的public属性的成员方法和成员变量。但却不能操作父类的protected & private成员变量和成员方法

#include <iostream>
class A
{
public:  
     A(){}
    void FuncA()
    {
        std::cout<<"FuncA in Class A" <<std::endl;
    }
protected:
    void FuncB(){
        std::cout<<"FuncB in Class A"<<std::endl;
    }
private:
    void FuncC(){
        std::cout<<"FunC in Class A" <<std::endl;
    }
};

class B :publicA
{
public:
    B(){}
    void CallFuncA()
    {
        std::cout<<"call FuncA in Class B" <<std::endl;
        FuncA();
    }
    
    void CallFuncB()
    {
        std::cout<<"call FuncB in Class B"<<std::endl;
        FuncB();
    }
    
    void CallFuncC()
    {
        std::cout<<"Call FuncC in class B & will Call Failed " <<std::endl;
        FuncC();
    }
};

int main()
{

    B testF;
    testF.CallFuncA();
    testF.CallFuncB();
    testF.CallFuncC();
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 6
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//