C++02.访问控制
1.class是struct的扩展,它包括数据成员和成员函数。
2.在C++中,有三种访问权限:
(1)private:默认,只供类内部的函数使用。
(2)public:类外的程序可以使用。
(3)proteted
注意:
C++的规范,类名称的首字母应该大写。
eg:
#include <stdio.h>
class Person{
private: //private只供类内部的函数使用,改为public程序可以正确输出结果。
char *name;
int age;
char *work;
void printfInfo(void)
{
printf("name=%s,age=%d,work=%s\n",name,age,work);
}
};
int main(int argc,char **argv)
{
Person per;
per.name="zhangsan";
per.age=;
per.work="teacher";
per.printfInfo();
;
}
出现错误:

3.通过函数来访问class中的私有变量。
eg:
#include <stdio.h>
class Person{
private: //private只供类内部的函数使用
char *name;
int age;
char *work;
public:
void setName(char *n,int a,char *w){
name=n;
age=a;
work=w;
}
void printfInfo(void)
{
printf("name=%s,age=%d,work=%s\n",name,age,work);
}
};
int main(int argc,char **argv)
{
Person per;
// per.name="zhangsan";
// per.age=20;
// per.work="teacher";
per.setName(,"teacher");
per.printfInfo();
;
}

4.为什么要把变量设置为private?
因为如果是public,在外部的函数,比如main函数可以随意地设置它的值,即使是不合理的值。这显然不是一个好的现象,为了避免用户做出的错误的设置,应该把class的变量设置为私有的,在提供函数来设置这些变量。
eg:
#include <stdio.h>
class Person{
private: //private只供类内部的函数使用
char *name;
int age;
char *work;
public:
void setName(char *n,int a,char *w){
name=n;
work=w;
age=a;
||a>){
age=;
}
}
void printfInfo(void)
{
printf("name=%s,age=%d,work=%s\n",name,age,work);
}
};
int main(int argc,char **argv)
{
Person per;
// per.name="zhangsan";
// per.age=20;
// per.work="teacher";
per.setName(,"teacher");
per.printfInfo();
;
}
结果:

改变第30行的参数“20”改为“200”
结果如下:

注意:age的值为0,是因为13行的判断语句起的作用。
5.Person per;
我们已经将Person定义为一个class类,那么成per是Person这个类的一个对象。
6.C++中的this指针,指向当前对象。
eg:
#include <stdio.h>
class Person{
private: //private只供类内部的函数使用
char *name;
int age;
char *work;
public:
void setName(char *name,int age,char *work){
this->name=name; //这里的name,age,work代表的是setName函数传递进来的参数,而不是class中的变量,因为在c语言和C++中的就近原则。
this->work=work;
this->age=age;
||age>){
;
}
}
void printfInfo(void)
{
printf("name=%s,age=%d,work=%s\n",name,age,work);
}
};
int main(int argc,char **argv)
{
Person per;
// per.name="zhangsan";
// per.age=20;
// per.work="teacher";
per.setName(,"teacher");
per.printfInfo();
;
}
C++02.访问控制的更多相关文章
- ssh访问控制,多次失败登录即封掉IP,防止暴力破解
ssh访问控制,多次失败登录即封掉IP,防止暴力破解 一.系统:Centos6.3 64位 二.方法:读取/var/log/secure,查找关键字 Failed,例如(注:文中的IP地址特意做了删减 ...
- C# 访问控制:public、private、protected和internal
平日工作时最常用的访问控制符是public和private,当看到prism里面大量使用protected的时候,觉得还是不太理解为啥. 所以就静下心来查找并理解了一下,这里记录下,以便回顾和交流. ...
- 教程:基于访问控制的ABAP CDS视图权限
Hi! 对每一个CDS视图,我们都可以通过DCL(Data Control Language)定义访问控制.在这篇文章中,我会介绍ABAP CDS视图中非常重要的一面:权限管理. 本文的阐述基于我正在 ...
- Hbase学习02
第2章 Apache HBase配置 本章在“入门”一章中进行了扩展,以进一步解释Apache HBase的配置. 请仔细阅读本章,特别是基本先决条件,确保您的HBase测试和部署顺利进行,并防止数据 ...
- 文件访问控制列表facl
[root@bogon code]# getfacl a.c //获取文件a.c的文件访问控制列表 # file: a.c # owner: root # group: root user::rw- ...
- Linux 系统访问控制列表ACL
常见的文件系统的一般权限(rwx).特殊权限(SUID,SGID,STICK).隐藏权限(chattr)其实有个共性——权限是针对某一类用户设置的.而如果希望对某个指定的用户进行单独的权限控制,那么就 ...
- 03IO端口寻址和访问控制方式
1. I/O端口和寻址 CPU 为了访问 I/O 接口控制器或者控制卡上的数据和状态信息,需要首先指定他们的地址.这种地址就称为I/O端口地址或简称端口.通常一个 I/O 控制器包含访问数据的数据端口 ...
- Kong Gateway - 11 基于网关服务的ACL访问控制列表 黑名单
Kong Gateway - 11 基于网关服务的ACL访问控制列表 黑名单 同一服务名称 book 不允许即创建白名单访问控制列表又创建黑名单访问控制列表 启用服务的白名单&黑名单配置文件时 ...
- 负载均衡服务之HAProxy https配置、四层负载均衡以及访问控制
前文我们聊了下haproxy的访问控制ACL的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12817773.html:今天我们来聊一聊haproxy的h ...
随机推荐
- [Hadoop in Action] 第6章 编程实践
Hadoop程序开发的独门绝技 在本地,伪分布和全分布模式下调试程序 程序输出的完整性检查和回归测试 日志和监控 性能调优 1.开发MapReduce程序 [本地模式] 本地模式 ...
- crontab介绍
1.Cron的启动与关闭 由于Cron是Linux的内置服务,可以用以下的方法启动.关闭这个服务: /sbin/service crond start //启动服务/sbin/se ...
- 客服小妹是如何泡到手的——C#定时提醒·语音录制·语音播放·文件转录Demo源码——倾情奉献!
一.需求提出 客服小妹跟我说,每天要统计新加好友数,得先记下昨天的数目,然后查看今天的数目,还要相减,打字,记录——好麻烦! 又说,客户多的时候,忙起这头忘了那头,文字记录备忘又太费劲! 我说,赐你一 ...
- WPF - 属性系统 (3 of 4)
依赖项属性元数据 在前面的章节中,我们已经介绍了WPF依赖项属性元数据中的两个组成:CoerceValueCallback回调以及PropertyChangedCallback.而在本节中,我们将对其 ...
- 【Java并发编程实战】-----“J.U.C”:CLH队列锁
在前面介绍的几篇博客中总是提到CLH队列,在AQS中CLH队列是维护一组线程的严格按照FIFO的队列.他能够确保无饥饿,严格的先来先服务的公平性.下图是CLH队列节点的示意图: 在CLH队列的节点QN ...
- 【Java并发编程实战】-----“J.U.C”:Phaser
Phaser由java7中推出,是Java SE 7中新增的一个使用同步工具,在功能上面它与CyclicBarrier.CountDownLatch有些重叠,但是它提供了更加灵活.强大的用法. Cyc ...
- 一缕阳光:DDD(领域驱动设计)应对具体业务场景,如何聚焦 Domain Model(领域模型)?
写在前面 阅读目录: 问题根源是什么? <领域驱动设计-软件核心复杂性应对之道>分层概念 Repository(仓储)职责所在? Domain Model(领域模型)重新设计 Domain ...
- 到爱尔兰敲代码 / Come, Coding in Ireland
这是我在都柏林的第四个月,该办的证也都办完了,该安定下来的也安定下来了,所以也简单介绍下到爱尔兰做IT的相关过程和政策. 如果有兴趣在英语环境工作的话,我也可以帮忙推荐或者找找. 去年15年1月正好开 ...
- .NET 基础 一步步 一幕幕[数组、集合、异常捕获]
数组.集合.异常捕获 数组: 一次性存储多个相同类型的变量. 一维数组: 语法: 数组类型[] 数组名=new 数组类型[数组长度]; 声明数组的语法: A.数据类型 [] 数组名称= new 数据类 ...
- node之path模块
node之path模块 原文链接 //引用该模块 var path = require("path"); 1.路径解析,得到规范化的路径格式 对window系统,目录分隔为'', ...