C++01.類的引入。本站提示廣大學習愛好者:(C++01.類的引入)文章只能為提供參考,不一定能成為您想要的結果。以下是C++01.類的引入正文
1.假定我們要輸入張三,李四兩團體的根本信息,包括姓名,年齡,可以用以下的C順序完成:
eg:
1 #include <stdio.h>
2
3 int main(int argc,char **argv)
4 {
5 char *zs_name="zhansan";
6 int zs_age=10;
7
8 char *ls_name="lisi";
9 int ls_age=19;
10
11 printf("name=%s,age=%d\n",zs_name,zs_age);
12 printf("name=%s,age=%d\n",ls_name,ls_age);
13
14 return 0;
15 }
2.假定要輸入很多人的信息,那麼用下面這樣的順序思緒完成起來很不方便,可以用數組來完成:
eg:
1 #include <stdio.h>
2
3 int main(int argc,char **argv)
4 {
5 char *names[]={"zhangsan","lisi"};
6 char ages[]={10,19};
7
8 int i;
9
10 //用for來循環輸入
11 for(i=0;i<2;i++){
12 printf("name=%s,age=%d\n",names[i],ages[i]);
13 }
14
15
16 return 0;
17 }
3.假定根本信息的屬性有很多個,還有任務,婚姻情況等等的屬性,按下面的順序思想,我們就得添加很多用於保管屬性的數組,這顯然也不是很方便,可以持續改良順序,引入構造體:
eg:
1 #include <stdio.h>
2
3 struct person{
4 char *name;
5 int age;
6 char *work;
7 };
8
9 int main(int argc,char **argv)
10 {
11 struct person persons[]={
12 {"zhangsan",10,"teacher"},
13 {"lisi",19,"doctor"},
14 };
15
16 int i;
17
18 //用for來循環輸入
19 for(i=0;i<2;i++){
20 printf("name=%s,age=%d,work=%s\n",persons[i].name,persons[i].age,persons[i].work);
21 };
22
23
24 return 0;
25 }
4.下面的函數只是在構造體內定義了屬性,我們可以持續改良,定義一些相關的函數:
eg:留意在C言語外面,只能寫函數指針。
1 #include <stdio.h>
2
3 struct person{
4 char *name;
5 int age;
6 char *work;
7
8 void (*printfInfo)(struct person *per);
9 };
10
11 void printfInfo(struct person *per)
12 {
13 printf("name=%s,age=%d,work=%s\n",per->name,per->age,per->work);
14 }
15
16 int main(int argc,char **argv)
17 {
18 struct person persons[]={
19 {"zhangsan",10,"teacher",printfInfo},
20 {"lisi",19,"doctor",printfInfo},
21 };
22
23 persons[0].printfInfo(&persons[0]);
24 persons[1].printfInfo(&persons[1]);
25
26 return 0;
27 }
5.用更簡約的方式寫下面的順序,直接在構造體內寫函數,留意以下順序文件的後綴是“.cpp”而不是“.c”不然會呈現錯誤。
eg:
#include <stdio.h>
struct person{
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)
{
struct person persons[]={
{"zhangsan",10,"teacher"},
{"lisi",19,"doctor"},
};
persons[0].printfInfo();
persons[1].printfInfo();
return 0;
}
6.C++對struct做了擴展,可以直接在strucr內直接定義函數,函數可以直接訪問struct外面的屬性。可以把這個構造體重新定義為一個新的類別:
eg:
1 #include <stdio.h>
2
3 class person{
4 public: //必需定義權限為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 struct person persons[]={
17 {"zhangsan",10,"teacher"},
18 {"lisi",19,"doctor"},
19 };
20
21 persons[0].printfInfo();
22 persons[1].printfInfo();
23
24 return 0;
25 }
面向對象順序編程的特點:
(1)封裝
(2)承繼
(3)多態