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.访问控制的更多相关文章

  1. ssh访问控制,多次失败登录即封掉IP,防止暴力破解

    ssh访问控制,多次失败登录即封掉IP,防止暴力破解 一.系统:Centos6.3 64位 二.方法:读取/var/log/secure,查找关键字 Failed,例如(注:文中的IP地址特意做了删减 ...

  2. C# 访问控制:public、private、protected和internal

    平日工作时最常用的访问控制符是public和private,当看到prism里面大量使用protected的时候,觉得还是不太理解为啥. 所以就静下心来查找并理解了一下,这里记录下,以便回顾和交流. ...

  3. 教程:基于访问控制的ABAP CDS视图权限

    Hi! 对每一个CDS视图,我们都可以通过DCL(Data Control Language)定义访问控制.在这篇文章中,我会介绍ABAP CDS视图中非常重要的一面:权限管理. 本文的阐述基于我正在 ...

  4. Hbase学习02

    第2章 Apache HBase配置 本章在“入门”一章中进行了扩展,以进一步解释Apache HBase的配置. 请仔细阅读本章,特别是基本先决条件,确保您的HBase测试和部署顺利进行,并防止数据 ...

  5. 文件访问控制列表facl

    [root@bogon code]# getfacl a.c //获取文件a.c的文件访问控制列表 # file: a.c # owner: root # group: root user::rw- ...

  6. Linux 系统访问控制列表ACL

    常见的文件系统的一般权限(rwx).特殊权限(SUID,SGID,STICK).隐藏权限(chattr)其实有个共性——权限是针对某一类用户设置的.而如果希望对某个指定的用户进行单独的权限控制,那么就 ...

  7. 03IO端口寻址和访问控制方式

    1. I/O端口和寻址 CPU 为了访问 I/O 接口控制器或者控制卡上的数据和状态信息,需要首先指定他们的地址.这种地址就称为I/O端口地址或简称端口.通常一个 I/O 控制器包含访问数据的数据端口 ...

  8. Kong Gateway - 11 基于网关服务的ACL访问控制列表 黑名单

    Kong Gateway - 11 基于网关服务的ACL访问控制列表 黑名单 同一服务名称 book 不允许即创建白名单访问控制列表又创建黑名单访问控制列表 启用服务的白名单&黑名单配置文件时 ...

  9. 负载均衡服务之HAProxy https配置、四层负载均衡以及访问控制

    前文我们聊了下haproxy的访问控制ACL的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12817773.html:今天我们来聊一聊haproxy的h ...

随机推荐

  1. [Hadoop in Action] 第6章 编程实践

    Hadoop程序开发的独门绝技 在本地,伪分布和全分布模式下调试程序 程序输出的完整性检查和回归测试 日志和监控 性能调优   1.开发MapReduce程序   [本地模式]        本地模式 ...

  2. crontab介绍

    1.Cron的启动与关闭 由于Cron是Linux的内置服务,可以用以下的方法启动.关闭这个服务: /sbin/service crond start           //启动服务/sbin/se ...

  3. 客服小妹是如何泡到手的——C#定时提醒·语音录制·语音播放·文件转录Demo源码——倾情奉献!

    一.需求提出 客服小妹跟我说,每天要统计新加好友数,得先记下昨天的数目,然后查看今天的数目,还要相减,打字,记录——好麻烦! 又说,客户多的时候,忙起这头忘了那头,文字记录备忘又太费劲! 我说,赐你一 ...

  4. WPF - 属性系统 (3 of 4)

    依赖项属性元数据 在前面的章节中,我们已经介绍了WPF依赖项属性元数据中的两个组成:CoerceValueCallback回调以及PropertyChangedCallback.而在本节中,我们将对其 ...

  5. 【Java并发编程实战】-----“J.U.C”:CLH队列锁

    在前面介绍的几篇博客中总是提到CLH队列,在AQS中CLH队列是维护一组线程的严格按照FIFO的队列.他能够确保无饥饿,严格的先来先服务的公平性.下图是CLH队列节点的示意图: 在CLH队列的节点QN ...

  6. 【Java并发编程实战】-----“J.U.C”:Phaser

    Phaser由java7中推出,是Java SE 7中新增的一个使用同步工具,在功能上面它与CyclicBarrier.CountDownLatch有些重叠,但是它提供了更加灵活.强大的用法. Cyc ...

  7. 一缕阳光:DDD(领域驱动设计)应对具体业务场景,如何聚焦 Domain Model(领域模型)?

    写在前面 阅读目录: 问题根源是什么? <领域驱动设计-软件核心复杂性应对之道>分层概念 Repository(仓储)职责所在? Domain Model(领域模型)重新设计 Domain ...

  8. 到爱尔兰敲代码 / Come, Coding in Ireland

    这是我在都柏林的第四个月,该办的证也都办完了,该安定下来的也安定下来了,所以也简单介绍下到爱尔兰做IT的相关过程和政策. 如果有兴趣在英语环境工作的话,我也可以帮忙推荐或者找找. 去年15年1月正好开 ...

  9. .NET 基础 一步步 一幕幕[数组、集合、异常捕获]

    数组.集合.异常捕获 数组: 一次性存储多个相同类型的变量. 一维数组: 语法: 数组类型[] 数组名=new 数组类型[数组长度]; 声明数组的语法: A.数据类型 [] 数组名称= new 数据类 ...

  10. node之path模块

    node之path模块 原文链接 //引用该模块 var path = require("path"); 1.路径解析,得到规范化的路径格式 对window系统,目录分隔为'', ...