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 ...
随机推荐
- linux下安装Redis以及phpredis模块
一:redis的安装 1. 首先上官网下载Redis 压缩包,地址:http://redis.io/download 下载 2. 通过远程管理工具,将压缩包拷贝到Linux服务器中,执行解压操作 3. ...
- OpenGL shader 中关于顶点坐标值的思考
今天工作中需要做一个事情: 在shader内部做一些空间距离上的计算,而且需要对所有的点进行计算,符合条件的显示,不符合条件的点不显示. 思路很简单,在vertex shader内知道顶点坐标,进行计 ...
- 写个Fragment方便的抽象基类 BaseFragment
package com.zb.zhihuianyang.base; import android.app.Activity; import android.os.Bundle; import andr ...
- GO基础(二)
本例中梳理go语言中的协程和通道. package main import ( "fmt" "time" ) //func01.func02 为演示同步机制 f ...
- 打造TypeScript的Visual Studio Code开发环境
打造TypeScript的Visual Studio Code开发环境 本文转自:https://zhuanlan.zhihu.com/p/21611724 作者: 2gua TypeScript是由 ...
- 虚拟机体验之 Xen 篇 —— 令人脑洞大开的奇异架构
这一篇我要体验的虚拟机系统是 Xen.在虚拟机领域,Xen 具有非常高的知名度,其名字经常在各类文章中出现.同时 Xen 也具有非常高的难度,别说玩转,就算仅仅只是理解它,都不是那么容易.之所以如此, ...
- [开源]QuickSwitchSVNClient,快速完成SVN Switch的工具
在实际的开发中,我们一般使用SVN工具进行源代码的管理.在实际的产品开发中,根据项目的一些定制要求,往往需要对某一些代码的修改,但是又不想影响主要的开发,这个时候需要对当前的主分支做一些分支处理(br ...
- Visual Studio 2015 移动跨平台开发初体验
微软换了新 CEO 后变化很大,对我们团队最有利的消息就是 Visual Studio 2015 支持移动应用跨平台开发. 还记不记得很早之前,Xamarin 宣布与微软成为合作伙伴的消息.显然,Xa ...
- Go语言实战 - revel框架教程之CSRF(跨站请求伪造)保护
CSRF是什么?请看这篇博文“浅谈CSRF攻击方式”,说的非常清楚. 现在做网站敢不防CSRF的我猜只有两种情况,一是没什么人访问,二是局域网应用.山坡网之前属于第一种情况,哈哈,所以至今没什么问题. ...
- [翻译]AKKA笔记 - 有限状态机 -1
原文地址:http://rerun.me/2016/05/21/akka-notes-finite-state-machines-1/ 我最近有个机会在工作上使用了Akka FSM,是个非常有趣的例子 ...