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