C++02.访问控制
2018-06-17 23:28:51来源:未知 阅读 ()
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 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 友元函数 2020-06-10
- 公有继承中派生类Student对基类Person成员的访问 代码参考 2020-04-20
- linux与Windows进程控制 2019-11-22
- C++类拷贝控制 深拷贝 浅拷贝 2019-09-30
- C++浮点数据的输出控制 2019-08-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash