C++02.访问控制

1.class是struct的扩展,它包括数据成员和成员函数。

2.在C++中,有三种访问权限:

  (1)private:默认,只供类内部的函数使用。

  (2)public:类外的程序可以使用。

  (3)proteted

注意:

  C++的规范,类名称的首字母应该大写。

eg:

 1 #include <stdio.h>
 2
 3 class Person{
 4 private:            //private只供类内部的函数使用,改为public程序可以正确输出结果。
 5         char *name;
 6         int age;
 7         char *work;
 8
 9         void printfInfo(void)
10         {
11             printf("name=%s,age=%d,work=%s\n",name,age,work);
12         }
13     };
14 int main(int argc,char **argv)
15 {
16     Person per;
17     per.name="zhangsan";
18     per.age=20;
19     per.work="teacher";
20
21     per.printfInfo();
22
23     return 0;
24 }

出现错误:

3.通过函数来访问class中的私有变量。

eg:

 1 #include <stdio.h>
 2
 3 class Person{
 4 private:            //private只供类内部的函数使用
 5         char *name;
 6         int age;
 7         char *work;
 8 public:
 9     void setName(char *n,int a,char *w){
10         name=n;
11         age=a;
12         work=w;
13     }
14         void printfInfo(void)
15         {
16             printf("name=%s,age=%d,work=%s\n",name,age,work);
17         }
18     };
19 int main(int argc,char **argv)
20 {
21     Person per;
22 //    per.name="zhangsan";
23 //    per.age=20;
24 //    per.work="teacher";
25     per.setName("zhangsan",20,"teacher");
26     per.printfInfo();
27
28     return 0;
29 }

4.为什么要把变量设置为private?

  因为如果是public,在外部的函数,比如main函数可以随意地设置它的值,即使是不合理的值。这显然不是一个好的现象,为了避免用户做出的错误的设置,应该把class的变量设置为私有的,在提供函数来设置这些变量。

eg:

 1 #include <stdio.h>
 2
 3 class Person{
 4 private:            //private只供类内部的函数使用
 5         char *name;
 6         int age;
 7         char *work;
 8 public:
 9     void setName(char *n,int a,char *w){
10         name=n;
11         work=w;
12         age=a;
13         if(a<0||a>150){
14             age=0;
15         }
16
17
18     }
19         void printfInfo(void)
20         {
21             printf("name=%s,age=%d,work=%s\n",name,age,work);
22         }
23     };
24 int main(int argc,char **argv)
25 {
26     Person per;
27 //    per.name="zhangsan";
28 //    per.age=20;
29 //    per.work="teacher";
30     per.setName("zhangsan",20,"teacher");
31     per.printfInfo();
32
33     return 0;
34 }

结果:

改变第30行的参数“20”改为“200”

结果如下:

注意:age的值为0,是因为13行的判断语句起的作用。

5.Person per;

  我们已经将Person定义为一个class类,那么成per是Person这个类的一个对象。

6.C++中的this指针,指向当前对象。

eg:

 1 #include <stdio.h>
 2
 3 class Person{
 4 private:            //private只供类内部的函数使用
 5         char *name;
 6         int age;
 7         char *work;
 8 public:
 9     void setName(char *name,int age,char *work){
10         this->name=name;  //这里的name,age,work代表的是setName函数传递进来的参数,而不是class中的变量,因为在c语言和C++中的就近原则。
11         this->work=work;
12         this->age=age;
13         if(age<0||age>150){
14             this->age=0;
15         }
16
17
18     }
19         void printfInfo(void)
20         {
21             printf("name=%s,age=%d,work=%s\n",name,age,work);
22         }
23     };
24 int main(int argc,char **argv)
25 {
26     Person per;
27 //    per.name="zhangsan";
28 //    per.age=20;
29 //    per.work="teacher";
30     per.setName("zhangsan",200,"teacher");
31     per.printfInfo();
32
33     return 0;
34 }
时间: 2024-10-10 00:54:02

C++02.访问控制的相关文章

百度刚放假啊数据库风口浪尖萨拉疯了

http://www.ebay.com/cln/l_x5585/2015.02.11/176746639012 http://www.ebay.com/cln/jiacha_boryk/2015.02.11/176837188016 http://www.ebay.com/cln/gbnlin0/2015.02.11/176837189016 http://www.ebay.com/cln/j_j2841/2015.02.11/177066749015 http://www.ebay.com/c

百度房间爱师傅卡卡是快乐疯了;爱死

http://www.ebay.com/cln/shx9479/-/177007606013/2015.02.11 http://www.ebay.com/cln/genqi12/-/176846034010/2015.02.11 http://www.ebay.com/cln/seyyon2/-/176906811016/2015.02.11 http://www.ebay.com/cln/wcn5971/-/176846032010/2015.02.11 http://www.ebay.co

百度和房价是否健康教案上开发

http://www.ebay.com/cln/l.kuan2/-/167247714018/2015.02.10 http://www.ebay.com/cln/setlia-3616/-/167086016019/2015.02.10 http://www.ebay.com/cln/pen-y77/-/167086017019/2015.02.10 http://www.ebay.com/cln/yua-me2/-/167399441016/2015.02.10 http://www.eba

百度电话费健身房拉伸件礼服加拉斯减肥

http://www.ebay.com/cln/cnli_c90nphs5e/-/167379958016/2015.02.07 http://www.ebay.com/cln/gaw4612/-/167226239018/2015.02.07 http://www.ebay.com/cln/re_len4/-/167263594010/2015.02.07 http://www.ebay.com/cln/ta.ku83/-/167162702017/2015.02.07 http://www.

百度回复金卡是减肥拉进来收付款

http://www.ebay.com/cln/cnli_c90nphs5e/-/167379958016/2015.02.08 http://www.ebay.com/cln/gaw4612/-/167226239018/2015.02.08 http://www.ebay.com/cln/re_len4/-/167263594010/2015.02.08 http://www.ebay.com/cln/ta.ku83/-/167162702017/2015.02.08 http://www.

百度放假哈萨克就发了设计费拉萨

http://www.ebay.com/cln/ldicn.mz6dm/2015.02.11/177030163015 http://www.ebay.com/cln/tan_qi5/2015.02.11/176903144013 http://www.ebay.com/cln/l.lu104/2015.02.11/177030175015 http://www.ebay.com/cln/ya01191/2015.02.11/176722580014 http://www.ebay.com/cl

百度房间撒谎发卡上就发了空间啊

http://www.ebay.com/cln/h-h4129/2015.02.11/176819191016 http://www.ebay.com/cln/fendo88/2015.02.11/176613943017 http://www.ebay.com/cln/ygon288/2015.02.11/176727517018 http://www.ebay.com/cln/ta.ch17/2015.02.11/176613950017 http://www.ebay.com/cln/g-

百度房间沙发客服就考试考几分离开

http://www.ebay.com/cln/jinlon8/book/167309734010/2015.02.10 http://www.ebay.com/cln/bam5330/book/167115292019/2015.02.10 http://www.ebay.com/cln/yi_za70/book/167315676012/2015.02.10 http://www.ebay.com/cln/y.y3463/book/167285977014/2015.02.10 http:/

Web Service学习笔记之----JAX-RPC

众所周知,数据科学是这几年才火起来的概念,而应运而生的数据科学家(data scientist)明显缺乏清晰的录取标准和工作内容.此次课程以<星际争霸II>回放文件分析为例,集中在IBM Cloud相关数据分析服务的应用.面对星际游戏爱好者希望提升技能的要求,我们使用IBM Data Science Experience中的jJupyter Notebooks来实现数据的可视化以及对数据进行深度分析,并最终存储到IBM Cloudant中.这是个介绍+动手实践的教程,参会者不仅将和讲师一起在线