【C++】类的封装 ③ ( 访问控制权限 )

这篇具有很好参考价值的文章主要介绍了【C++】类的封装 ③ ( 访问控制权限 )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。





一、类的封装 : 访问控制权限




1、访问控制权限


在 C++ 语言中 , 类的成员 的 " 访问控制权限 " 是通过 " 访问修饰符 " 指定的 ;

  • 类的 成员属性 和 成员方法 都可以 设置 访问控制权限 , 都可以被 访问修饰符 所修饰 ;

C++ 语言 提供了 3 种 访问修饰符 :

  • public : 修饰的 成员变量 和 成员函数 , 是 公开的 , 可以在任何地方访问 , 在 类的内部 和 类的外部 都可以访问 ;
  • protected : 修饰的 成员变量 和 成员函数 , 是 受保护的 , 只能在 类的内部 和 子类的内部 访问 ;
  • private : 修饰的 成员变量 和 成员函数 , 是 私有的 , 只能在 类的内部 访问 ;

2、类的内部 和 类的外部 概念


在上面的 访问控制权限 中 , 涉及到了 类的内部 和 类的外部 两种范围 ;

  • 类的内部 : 指的是定义的 class 类的大括号 { } 范围内 ;
  • 类的外部 : 指的是定义的 class 类的大括号 { } 范围之外的代码 ;

被 private 修饰的 类 的 成员属性 和 成员方法 , 只能在 类内部 , 也就是 class 类的大括号 { } 范围内 被访问到 ;

一旦出了类 , 类中的 private 成员 和 protected 成员 便不能被访问到 ;


示例代码分析 :

  • 在 类的内部 , 可以访问所有的 3 种成员变量 ,
  • 在 类的外部 , 只能访问 publicVar 成员变量 ,
  • 还有一种特殊情况 , 就是在 MyClass 子类的内部 , 可以访问 protectedVar 成员变量 , 该 protectedVar 成员变量不能在 类的外部 访问 , 只能在 类的内部 或 子类的内部 被访问到 ;
// 定义类 : 通过 访问修饰符 测试 类的 访问控制权限
class MyClass {
public:
	int publicVar;		// 公开成员变量  

protected:
	int protectedVar;	// 受保护成员变量  

private:
	int privateVar;		 // 私有成员变量  
};

3、默认访问控制权限


如果变量没有指定 访问修饰符 , 那么 默认的访问控制权限 是 私有的 , 默认被 private 修饰 ;

// 定义类 : 通过 访问修饰符 测试 类的 访问控制权限
class MyClass {
	int defaultVar;		// 默认成员变量 - 私有成员变量
public:
	int publicVar;		// 公开成员变量  

protected:
	int protectedVar;	// 受保护成员变量  

private:
	int privateVar;		 // 私有成员变量  
};




二、代码示例 - 访问控制权限




1、错误代码示例 - 类的 访问控制权限



错误代码示例 :

// 包含 C++ 头文件
#include "iostream"

// 使用 std 标准命名空间
//		该命名空间中 , 定义了很多标准定义
using namespace std;

// 定义类 : 通过 访问修饰符 测试 类的 访问控制权限
class MyClass {
	int defaultVar;		// 默认成员变量 - 私有成员变量
public:
	int publicVar;		// 公开成员变量  

protected:
	int protectedVar;	// 受保护成员变量  

private:
	int privateVar;		 // 私有成员变量  
};

int main()
{
	// 定义类对象
	MyClass obj;

	// 访问类的 公开成员变量
	obj.publicVar = 10;

	// 访问类的 私有成员变量
	obj.privateVar = 10;

	// 访问类的 受保护成员变量
	obj.protectedVar = 10;

	// 访问类的 默认类型成员变量
	obj.defaultVar = 10;

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
    return 0;
}

执行结果 :

已启动生成…
1>------ 已启动生成: 项目: HelloWorld, 配置: Debug Win32 ------
1>hello_world.cpp
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(30,5): error C2248: “MyClass::privateVar”: 无法访问 private 成员(在“MyClass”类中声明)
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(18): message : 参见“MyClass::privateVar”的声明
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(9): message : 参见“MyClass”的声明
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(33,5): error C2248: “MyClass::protectedVar”: 无法访问 protected 成员(在“MyClass”类中声明)
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(15): message : 参见“MyClass::protectedVar”的声明
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(9): message : 参见“MyClass”的声明
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(36,5): error C2248: “MyClass::defaultVar”: 无法访问 private 成员(在“MyClass”类中声明)
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(10): message : 参见“MyClass::defaultVar”的声明
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(9): message : 参见“MyClass”的声明
1>已完成生成项目“HelloWorld.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0==========

【C++】类的封装 ③ ( 访问控制权限 ),C++,c++,访问控制权限,访问修饰符,private,public,原力计划文章来源地址https://www.toymoban.com/news/detail-701088.html

到了这里,关于【C++】类的封装 ③ ( 访问控制权限 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java当中四种权限刨析( private、default、protected、public)

    目录 一、java权限简介 二、举例使用 1.private 2.默认权限(default) 3.protected 4.public 注意        java当中有4种访问修饰限定符privat、default(默认访问权限),protected以及public。只有默认访问权限和public能够用来修饰类。修饰类的变量和方法四种权限都可以。 private:如果一个

    2024年02月06日
    浏览(35)
  • 【C++】类的访问权限

             欢迎来到博主 Apeiron 的博客,祝您旅程愉快 !时止则止,时行则行。动静不失其时,其道光明。   目录 1、缘起 2、示例代码  3、总结          在 C++ 中,类在设计时,可以把 属性 和 行为 放在不同的权限下加以控制。访问权限有如下三种: 公共权限 publi

    2024年02月06日
    浏览(25)
  • c++ 学习之 类的权限访问修改学习

    当分析这段代码时,涉及的主要概念包括: 成员函数和成员变量: 在类 person 中,有三个成员函数:set_name、get_name 和 fun,以及两个成员变量:name 和 age。 成员函数用于操作和访问成员变量,可以在类内部定义其实现。 成员变量存储类的状态和数据。 访问权限: set_name、

    2024年02月10日
    浏览(25)
  • java面试题(21):private修饰的方法可以通过反射访问,那么private的意义是什么?

    1 反射简介 Java,在一个类中,为了不让外界访问到某些属性和方法,通常将其设置为private,用正常的方式(对象名.属性名,对象名.方法名)将无法访问此属性与方法,但有没有其他方法可以访问呢?答案是有的,这就是java反射带来的便利。利用反射访问类的私有属性及方

    2024年01月22日
    浏览(30)
  • 【C++】继承和多态、public、private、protected、重写

    继承是一种机制,通过它 一个类可以从另一个类继承属性和方法 。派生类(子类)继承基类(父类)的成员函数和数据成员,并且可以在其基础上扩展自己的成员函数和数据成员。C++支持多重继承,即一个派生类可以同时从多个基类中继承。 多态是指 同一种操作作用于不同

    2024年02月03日
    浏览(38)
  • C++从入门到精通——类的定义及类的访问限定符和封装

    类的定义是面向对象编程中的基本概念,它描述了一类具有相同属性和方法的对象的抽象模板。类定义了对象的结构和行为,包括数据成员(属性)和成员函数(方法)。通过类,可以创建多个具有相同属性和方法的对象实例,从而实现代码的复用和模块化。类的定义通常包

    2024年04月10日
    浏览(30)
  • 【Java基础教程】(十八)包及访问权限篇 · 下:Java编程中的权限控制修饰符、单例设计模式 (Singleton)和多例设计模式的综合探析~

    掌握Java 中的4种访问权限; 掌握Java 语言的命名规范; 掌握单例设计模式与多例设计模式的定义结构; 对于封装性,实际上之前只详细讲解了 private , 而封装性如果要想讲解完整,必须结合全部4种访问权限来看,这4种访问权限的定义如下表所示。 范围 private default protected

    2024年02月16日
    浏览(35)
  • C++篇----类、封装、类访问权限、类实例化

    c语言是面向过程的编程语言 c++是面向对象的编程语言 面向过程:关注过程,对于求解问题的不走,调用函数逐步解决问题 就洗衣服来说:洗衣服需要放水,倒洗衣粉,排水,甩干,晾衣服 面向对象:关注的是对象,在洗衣服这一整体来说,参与的对象有人,洗衣粉,洗衣

    2023年04月25日
    浏览(27)
  • 【C++初阶】三、类和对象(面向过程、class类、类的访问限定符和封装、类的实例化、类对象模型、this指针)

    ========================================================================= 相关代码gitee自取 : C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 【C++初阶】二、入门知识讲解 (引用、内联函数、auto、基于范围的for循环、指针空值

    2024年02月04日
    浏览(31)
  • 【C++】继承 ⑤ ( public 公有继承 - 示例分析 | protected 保护继承 - 示例分析 | private 私有继承 - 示例分析 )

    成员的访问属性 需要看根据下面的逻辑进行判定 : 调用位置 : 看是在哪调用的 , 在 类内部 , 派生类 ( 子类 ) , 还是在 类外部 ; 子类继承方式 : 公有继承 : public 保护继承 : protected 私有继承 : private 父类中的访问级别 : 公有成员 : public 保护成员 : protected 私有成员 : private 如 :

    2024年02月08日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包