C++[第二章]--访问控制

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

访问控制

1、private

class里面的 private: 的成员外界不能访问。其作用保护一些数据,避免用户对成员做一些错误设置,可用public成员函数来限定一些情况,(比如年龄不小于0)

2、public

class里面的 public: 的成员外界函数能直接访问修改。
代码如下:



#include <stdio.h>

class Person {
private:
	char *name;
	int  age;
	char *work;

public:
	void setName(char *name)
	{
		this->name = name;  //name为啥是形式参数而不是 上面的成员name, 因为c++的就近原则。
	}
	int setAge(int age)
	{
		if (age < 0 || age > 150)
		{
			this->age = 0;
			return -1;
		}
		this->age = age;
		return 0;
	}
	void printInfo(void)
	{
		printf("name = %s, age = %d, work = %s\n", name, age, work); 
	}
};

int main(int argc, char **argv)
{
	Person per;

	//per.name = "zhangsan";  //private: 的成员class外界不能访问
	per.setName("zhangsan");  //通过public函数操作private变量
	per.setAge(200);
	per.printInfo();
	
	return 0;
}

3、protected 成员

受保护成员可以被类内部和派生类访问,但是不能被类外部访问。通常,受保护成员被用于实现类的细节,例如类的实现细节、派生类的实现等。在类的定义中使用关键字 protected 可以声明受保护成员。

实例:

class Animal {
protected:
   int age;
};
 class Dog : public Animal {
public:
   void setAge(int a) {
      age = a;
   }
   void displayAge() {
      cout << "Dog's age is: " << age << endl;
   }
};
 int main() {
   Dog d;
   d.setAge(5);
   d.displayAge();
   return 0;
}

在这个例子中,Animal类有一个protected成员变量age,它可以被Animal类的子类Dog访问。在Dog类中,setAge()函数可以设置age的值,而displayAge()函数可以显示它的值。在main函数中,我们创建了一个Dog对象d,并使用setAge()函数设置了它的年龄,然后使用displayAge()函数显示了它的年龄。文章来源地址https://www.toymoban.com/news/detail-604597.html

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

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

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

相关文章

  • C++第二章:变量和基本内置类型

    C++定义了一套包括算数类型和空类型在内的基本数据类型。 其中算数类型包含了字符、整形数、布尔值、浮点数。空类型不对应具体的值,仅用于一些特殊的场合,例如最常见的是:当一个函数不返回任何值时使用空类型作为返回类型。 算数类型分为两种:整形(包括字符和

    2024年02月06日
    浏览(30)
  • C++ 并发编程实战 第二章 线程管控

    线程通过构建 std::thread 对象而自动启动 ,该对象指明线程要运行的任务。 对应复杂的任务,可以使用函数对象。 一旦启动了线程,我们就需明确是要等待它结束(与之汇合 join() ),还是任由它独自运行(与之分离 detach() ) ❗❗❗ 同一个线程的 .join() 方法不能被重复调用

    2023年04月08日
    浏览(25)
  • 【C++】C++ primer plus第二章练习题

    c++程序的模块叫什么? 函数。 下面的预处理器编译指令是做什么用的? 包含头文件,将iostream文件的内容添加·到代码中 下面的语句是做什么用的? using namespace std; using是预编译器指令,让其使用std命名空间 什么语句可以用来打印短语“Hello, world”,然后开始新的一行? s

    2024年02月06日
    浏览(34)
  • C++ Primer Plus第二章编程练习答案

    答案仅供参考,实际运行效果取决于运行平台和运行软件 1.编写一个C++程序,它显示您的姓名和地址。 2.编写一个C程序它要求用户输入一个以 long 为单位的距离,然后将它转换为码(- ng等于220码) 3.编写1个C++程序它使用3个用户定义的函数(括mai()),并生成下面的输出Three blind

    2024年02月09日
    浏览(42)
  • C++学习之旅 第二章 printf与cout

    目录 1.printf简介  2.printf的四种用法 2.1 printf(\\\"字符串\\\"); 2.2 printf(\\\"输出控制符\\\",输出参数); 2.3 printf(\\\"输出控制符1 输出控制符2  ,,,,,,,, \\\", 输出参数1, 输出参数2,....... ); 2.4 printf(\\\"输出控制符 非输出控制符 \\\",输出参数); 3.printf为什么需要输出控制符 4.cout简介 cout的三种用法 5

    2024年02月08日
    浏览(48)
  • C++算法之旅、05 基础篇 | 第二章 数据结构

    常用代码模板2——数据结构 - AcWing 使用结构体指针,new Node() 非常慢,创建10万个节点就超时了,做笔试题不会用这种方式(优化是提前初始化好数组,但这样跟数组模拟没区别了,而且代码量很长) 使用两个数组,e存储val,ne存储next。空节点next用-1表示 826. 单链表 - AcWi

    2024年02月10日
    浏览(36)
  • 阶段七第二章连接数据库,逻辑控制器,定时器,分布式

    准备工作 : 1.启动数据库 2.加载mysql的JDBC驱动 · 方法1:在测试计划下方的位置,点击浏览添加JDBC的jar包 · 方法2:将JDBC的jar拷贝到lib目录,并重启jmeter 3.JDBC连接池配置参数: 编写JDBC脚本步骤 :(搜索指定商品,在返回结果中检查是否包含指定商品的ID的URL) 1、添加JDBC

    2024年01月22日
    浏览(38)
  • STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机

    1 电路图 2 TB6612简介 TB6612是双驱动,可同时驱动两个电机 STBY:接单片机的IO口清零电机全部停止,置1通过AIN1 AIN2,BIN1,BIN2 来控制正反转 VM:建议接10V以内电源( 瞬间上电12V可能会有尖峰电压击穿器件 ) VCC:接5V电源 GND:接电源负极 PWMA:接单片机的PWM口 ,控制转速 PWM

    2023年04月22日
    浏览(75)
  • 第二章(第二节):无穷小量和函数

    若 lim f(x) = 0 , 则称函数 f(x) 当 x → x 0 时是无穷小量,简称: 无穷小 。      x→ x 0 定理1. 有限多个 无穷小量的代数和仍是无穷小量 定理2. 有限多个 无穷小量的积也是无穷小量 定理3.常数与无穷小量的积也是无穷小量 定理4.有界变量与无穷小量的积是无穷小量 当 x→

    2024年02月08日
    浏览(31)
  • 第二章 re模块

    在处理字符串时,经常会有查找符合某些复杂规则的字符串的需求。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 Python 提供了 re 模块用于实现正则表达式的操作。在实现时,可以使用 re 模块提供的方法,如search()、match()、fi

    2024年02月09日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包