public、private、protected属性与public、private、protected继承

本文深入探讨了C++中public、private、protected三种访问权限的使用场景与区别,通过实例展示了类成员变量和成员函数在类内部与外部的访问规则,并解释了在继承关系下这些访问权限的特性。

一、先说类成员变量及成员函数的的属性。


1.public 与 private 的区别

这两个的区别学过C++的都比较清楚,public的变量和函数在类的内部外部都可以访问,而private只有在类的

内部可以访问
class Base
{
public:
 Base(int a, int b = 0);
 int GetA();
 int m_b;
private:
 int GetB();
 int m_a;
};

Base::Base(int a, int b)
{
 m_a = a;
 m_b = b;
}
int Base::GetA()
{
 return m_a;//类的内部可以访问私有变量, 正确
}
int Base::GetB()
{
 return m_b;//类的内部可以访问公有变量, 正确
}

int main( )
{
 int num;
 Base b(10);
 
 //num = b.m_a; //类的外部不能访问私有变量, 错误
 num = b.m_b;//类的外部可以访问公有变量, 正确
 return 0;
}


2. protected 与 private

如果一个类没有派生出其他类,那么protected和private是完全相同的,也就是说protected和private一样只

能在类的内部访问,不能在类的外部访问。

但是在派生其他类的情况下,protected和private的区别就体现出来了。private型变量只能在类本身中访问,

在其派生类中也不能访问;而protected型的变量可以在派生类中访问

class Base
{
public:
 Base(int a, int b = 0);
protected:
 int m_b;
private:
 int m_a;
};

class Derive : public Base
{
public:
 Derive(int a, int b = 0) : Base(a, b) {}
 int GetA();
 int GetB();
};

Base::Base(int a, int b)
{
 m_a = a;
 m_b = b;
}
int Derive::GetA()
{
 return 1;
 //return m_a;//派生类不能访问基类的私有变量, 错误
}
int Derive::GetB()
{
 return m_b;//派生类可以访问基类的保护变量, 正确
}

int main( )
{
 int num = 0;
 Base b(10, 20);
 
 //num = b.m_a; //类的外部不能访问私有变量, 错误
 //num = b.m_b; //类的外部不能访问保护变量, 错误
 return 0;
}


二、继承类型

了解了这三种数据类型,对继承关系就很清楚了。
private变量只在类本身可访问,因此不论哪种继承方式在派生类中都是不可访问的
剩下的可以这样记,public > protected > private,派生类中的数据类型是基类数据类型和继承方式中取小

的值

表:派生类中的数据类型

 继承方式: public  protected private
基类数据类型

public   public  protected private

protected  protected protected private

private   不可访问 不可访问 不可访问

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值