程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++02.訪問控制,02訪問控制

C++02.訪問控制,02訪問控制

編輯:C++入門知識

C++02.訪問控制,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 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved