首页 > 编程语言 >【C++-笔记】访问说明符public、protected和private的用途和区别

【C++-笔记】访问说明符public、protected和private的用途和区别

时间:2022-08-22 20:26:39浏览次数:77  
标签:成员 private 访问 说明符 C++ 派生类 protected public

在C++当中,访问说明符主要在如下两个场景中使用:

成员访问说明符

当我们在定义/声明一个类时,需要使用成员访问说明符来说明成员的访问权限,public、protected和private的区别如下:

  • public中的成员不论是类中的成员还是类生成的对象都可以访问
  • protected中的成员只有类中的成员和派生类可以访问
  • private中的成员只有类中的成员可以访问,该类生成的对象和派生类都无法访问

代码示例如下:

class Base {
public:
  int getNum() {return num;}
protected:
  int dri;
private:
  int num = 0;
};
class Drived : public Base {
public:
  int getProNum() {return dri;}  // 正确,能访问基类的protected成员
private:
  int b;
}
....
Base x;
int a = x.getNum(); // 正确,类的对象能够使用public成员
int c = x.num;  // 错误,类的对象不能够使用private成员

派生访问说明符

在上面的用途中提到,类内的访问说明符其实就是表明了外部/内部/派生类对类内成员的访问权限,而派生访问说明符用于派生类,形式一般如下:
class 派生类: 访问说明符 基类名
这里的访问说明符的目的是控制派生类用户(注意,不是派生类本身)对于基类成员的访问权限,应该怎么理解呢?也就是说规定了派生类生成的对象对于基类成员的访问权限

  • 如果使用public公有继承,则派生类的对象可以访问基类的public和protected成员
  • 如果使用protected继承,则基类的public成员和protected成员都是protected的,派生类的对象无法访问
  • 如果使用private私有继承,则基类的所有成员对于派生类的对象来说都是无法访问的

前述的例子中,如果我们将继承方式改成私有继承,成员函数getProNum仍然是正确的。

标签:成员,private,访问,说明符,C++,派生类,protected,public
From: https://www.cnblogs.com/wuyawine/p/16614098.html

相关文章

  • 从C过渡到C++——换一个视角深入数组[真的存在高效吗?](2)
    从C过渡到C++——换一个视角深入数组[真的存在高效吗?](2)C风格高效的数组遍历在过渡到C++之前我还是想谈一谈如何书写高效的C的代码,这里的高效指的是C代码的高效,也就是在不......
  • rk3566 linux编译运行librga C++程序
    本文使用的是linuxaarch64版librga.so(1.3.2),来自https://github.com/airockchip/librga 运行环境:rk3566linux系统编译环境:ubuntu20.04gcc/g++9.4工具链:gcc-buildroot......
  • c++ 跑酷小游戏之用户体验plus
    #undefUNICODE#undef_UNICODE#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<ctime>#include<windows.h>#include<conio.h>#inc......
  • 学习MFC遇到的问题(VC++深入详解)
    1.关于动态链接库dll编写:VS2015中用C++创建MFCDLL动态库2.【C++】Debug模式和Release模式的区别:3.也是一个靓仔实现的window的txt,使用CEditView:MFC单文档框架建立4.w......
  • effective c++注意点
    item2: item3:  只有被const修饰过的成员函数才能操作const变量......
  • C++ 炼气期之结构体
    1.前言随着计算机向着不同领域的延伸,数据的概念已经不仅局限于数值型数据,计算机需要处理大量的非数值、且复杂的类型数据。为了能抽象地描述这些非数值、复杂类型的数据......
  • 关于C/C++的Warning解释
    关于C/C++的Warning解释如何发现更多Warning在编译时加上命令-Wall和-Wextra即g++a.cpp-oa.out-Wall-WextraWarning是极为有用的,可以提醒你一些意想不到的问题......
  • 《《关于我把好好的c++小游戏改的很ex》》
    #undefUNICODE#undef_UNICODE#include<iostream>#include<iomanip>#include<string>#include<cstdlib>#include<ctime>#include<windows.h>#include<conio.h>#inc......
  • C++中函数指针使用
    类成员函数指针(memberfunctionpointer),是C++语言的一类指针数据类型,用于存储一个指定类具有给定的形参列表与返回值类型的成员函数的访问信息。一般我们是不会使用的,都......
  • C和C++的一处小知识点(小坑)
    在C语言中voidmain(){constinti=0;int*j=(int*)&i;*j=1;printf("%d,%d",i,*j);system("pause");}结果输出为1,1在C++......