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 ...
随机推荐
- MongoDB学习笔记三—增删改文档上
插入insert 单条插入 > db.foo.insert({"bar":"baz"}) WriteResult({ }) 批量插入 > db.fo ...
- 使用四元数解决万向节锁(Gimbal Lock)问题
问题 使用四元数可以解决万向节锁的问题,但是我在实际使用中出现问题:我设计了一个程序,显示一个三维物体,用户可以输入绕zyx三个轴进行旋转的指令,物体进行相应的转动. 由于用户输入的是绕三个轴旋转的角 ...
- fhq treap最终模板
新学习了fhq treap,厉害了 先贴个神犇的版, from memphis /* Treap[Merge,Split] by Memphis */ #include<cstdio> # ...
- OpenWrt中开启usb存储和samba服务
在从官网安装的WNDR3800 15.05.1版本OpenWrt中, 不带usb存储支持以及samba, 需要另外安装 1. 启用usb支持 USB Basic Support https://wik ...
- Asp.Net跨平台:Ubuntu14.0+Mono+Jexus+Asp.Net
Asp.Net跨平台的文章园子里有很多,这里给自己搭建的情况做一下总结,方便以后查看. 参考网站: http://www.linuxdot.net/(Linux DotNET大本营 ) http ...
- 一步步学习javascript基础篇(8):细说事件
终于学到事件了,不知道为何听到“事件”就有一种莫名的兴奋.可能是之前的那些知识点过于枯燥无味吧,说起事件感觉顿时高大上了.今天我们就来好好分析下这个高大上的东西. 可以说,如果没有事件我们的页面就只能 ...
- clang_intprt_t类型探究
作者:玄魂工作室-钱海龙 问题 这篇手把手教你构建 C 语言编译器,里面有着这样的代码 void eval() { int op, *tmp; while (1) { if (op == IMM) { ...
- FreeBinary 格式说明
说明 简称FB格式,是一个简单的二进制文件打包格式. 作用是FBX.unity.js等交换的一个中间格式. 由李剑英制定,易于读取,易于扩展 相应的代码可以用svn取得 SVN:http://code ...
- React-Native 组件开发方法
前言 React Native的开发思路是通过组合各种组件来组织整个App,在大部分情况下通过组合View.Image等几个基础的组件,可以非常方便的实现各种复杂的跨平台组件,不过在需要原生功能支持. ...
- ABP源码分析三十八: ABP.Web.Api.OData
如果对OData不熟悉的话可参考OData的初步认识一文以获取OData的一些初步知识. API.Odata 模块唯一用处就是提供了一个泛型版本的ODataController,实现了Controll ...