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. 【Star CCM+实例】开发一个简单的计算流程.md

    流程开发在CAE过程中处于非常重要的地位. 主要的作用可能包括: 将一些经过验证的模型隐藏在流程中,提高仿真的可靠性 将流程封装成更友好的界面,降低软件的学习周期 流程开发实际上需要做非常多的工作,尤 ...

  2. 跟Unity3D学代码优化

    今天我们来聊聊如何跟Unity学代码优化,准确地说,是通过学习Unity的IL2CPP技术的优化策略,应用到我们的日常逻辑开发中. 做过Unity开发的同学想必对IL2CPP都很清楚,简单地说,IL2 ...

  3. java中文乱码解决之道(九)-----总结

    乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了.LZ之所以写这个系列博客就是因为遇到 ...

  4. EasyPR--开发详解(4)形态学操作、尺寸验证、旋转等操作

    在上一篇深度分析与调优讨论中,我们介绍了高斯模糊,灰度化和Sobel算子.在本文中,会分析剩余的定位步骤. 根据前文的内容,车牌定位的功能还剩下如下的步骤,见下图中未涂灰的部分. 图1 车牌定位步骤 ...

  5. Deep learning:五十一(CNN的反向求导及练习)

    前言: CNN作为DL中最成功的模型之一,有必要对其更进一步研究它.虽然在前面的博文Stacked CNN简单介绍中有大概介绍过CNN的使用,不过那是有个前提的:CNN中的参数必须已提前学习好.而本文 ...

  6. Vertica 分区表设计(续)

    在上篇Vertica 分区表设计中,已经提过了Vertica的分区表创建和分区删除,但举例上并不系统, 本篇文章将系统的对分区表设计及后续的删除分区进行讲解. 概述:Vertica分区表(天和月)创建 ...

  7. Vertica DBD 分析优化设计

    DBD = Database Designer,是Vertica数据库优化中最主要的原生工具. 首先运行admintools工具,按下面步骤依次执行: 1.选择"6 Configuratio ...

  8. DotNet生成随机数的一些方法

    在项目开发中,一般都会使用到“随机数”,但是在DotNet中的随机数并非真正的随机数,可在一些情况下生成重复的数字,现在总结一下在项目中生成随机数的方法. 1.随机布尔值: /// <summa ...

  9. C#基础回顾(一)—C#访问修饰符

    一.写在前面的话 好久没有停下来总结自己,转眼间15年过去好些天,回首过去的日子,亦或失去,亦或所得!生活的节奏,常常让我们带着急急忙忙的节奏去追赶,也许这并不是每个人所期望的生活方式!于他人,于自己 ...

  10. ASP.NET Core 中文文档 第三章 原理(6)全球化与本地化

    原文:Globalization and localization 作者:Rick Anderson.Damien Bowden.Bart Calixto.Nadeem Afana 翻译:谢炀(Kil ...