C++访问控制
来源:互联网 发布:手机铃声放大软件 编辑:程序博客网 时间:2024/05/21 17:51
在C语言的结构体中,我们定义的结构体变量可以访问结构体里面的任意一个变量,但是在C++的类里面,我们可以设置他的访问权限,哪些可以更改,哪些不能更改,不能更改的变量可以通过哪些特殊途径去修改。这里我们先来认识一下C++的访问权限有哪几种。
private:
只能由 1. 该类中的函数、2. 其友元函数 访问。
不能被任何其他访问,该类的对象也不能访问。
protected:
可以被 1. 该类中的函数、2. 子类的函数、3. 其友元函数 访问。
但不能被该类的对象访问。
public:
可以被 1. 该类中的函数、2. 子类的函数、3. 其友元函数访问、4. 该类的对象 访问。
注:
友元函数包括3种:
设为友元的普通的非成员函数;
设为友元的其他类的成员函数;
设为友元类中的所有成员函数。
下面我们以一段程序来说明“private ”和 “public ”的区别,“protected”我们后面文章再介绍。
程序内容跟上一章一致,但是我们在类里面定义了哪些属于“private ”哪些属于 “public ”,它们的作用以及访问权限又有哪些,代码中还展示了当遇到类内部变量名一致的情况下如何区分开来,代码做了非常详细的注解来说明,如下:
#include <stdio.h>class Person{/* 私有成员 */private:/* 为什么要把它们设置为私有呢?是为了避免用户随意修改或设置错误的值,可以在public的方法中加以限制 */ char *name; int age; char *work;/* 公开成员 */ public: /* 这些公开的方法可以用于设置该类中的私有变量,提供一个修改窗口给用户,用户不能直接访问上面的私有成员 */ /* 形参为了保证可读性我们一般会设置为name,但如何避免两个变量重叠冲突呢? */ void setName(char *name) { /* 加上this可以表明是当前类里面参数 */ this->name = name; } int setAge(int age) { /* 加以限制,避免出错设置,把年龄限制在0-150 */ if(age<0 || age>150) { this->age = 0; return -1; } this->age = age; return 0; } void setWork(char *work) { /* 加上this可以表明是当前类里面参数 */ this->work = work; } void printInfo(void) { printf("name = %s, age = %d, work = %s\n", name, age, work); }};int main(int argc, char **argv){ /* per称为Person这个类的对象 */ Person per; /* 通过公开的函数来设置私有成员 */ per.setName("Zhangsan"); per.setAge(200);/* 形参为200则输入不在范围内,类里面加了限制会返回-1 */ per.setWork("doctor"); per.printInfo(); return 0;}
阅读全文
0 0
- Objective-c 访问控制
- 【c++】访问控制
- objective-c访问控制符
- 【c/c++】继承的访问控制
- 类成员的访问控制(C++)
- C++:类的成员访问权限控制
- 继承成员访问控制机制(C++)
- 【C++】【学习笔记】【018】访问控制
- [c++]派生类的访问控制
- 【C/C++】C++中类访问权限控制
- C/C++/JAVA/语法大PK——访问控制
- 【C/C++】C++中类访问权限控制
- 访问控制
- 访问控制
- 访问控制
- 访问控制
- 访问控制
- 访问控制
- 从头开始学算法:考研机试题练习(C/C++)--入门模拟
- QT文字绘制
- 使用PullToRefresh遇到的问题
- PHP laravel系列之中间件
- 解决的s2010空间丑陋,解决manifest xp不显示控件的方法
- C++访问控制
- 深入理解Java HashMap(JDK1.8)
- Map之ConcurrentHashMap
- 异常处理,finally,与自定义异常
- More Divisors ZOJ
- Android简单的编写一个txt阅读器(没有处理字符编码),适用于新手学习
- #if#ifdef#define等宏定义使用
- Client Copy后的号码段重复
- 浅谈Eclipse调用Tomcat服务的原理