Loading... ## C和C++中struct区别 <div class="tip inlineBlock share"> C语言struct只有变量 C++语言struct既有变量,也有函数 </div> ```C++ #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstring> using namespace std; //C语言中 不能放函数 struct fivk { int a; int b[5]; }; //C++中 可以放函数 struct Fivk { //学生的属性和数据 int age; int id; char name[32]; //学生的属性叫做 方法或行为 void print_stu() { cout << "age = " << age << endl << "id = " << endl << "neam : " << name << endl; } }; int main() { Fivk obj; obj.age = 10; obj.id = 2020001; strcpy(obj.name, "梦一帆"); obj.print_stu(); return 0; } ``` ![](https://blog.fivk.cn/usr/uploads/2021/04/1971002816.png) ## 类的封装 我们编写程序的目的是为了解决现实中的问题,而这些问题的构成都是由各种事物组成,我们在计算机中要解决这种问题,首先要做就是要将这个问题的參与者:事和物抽象到计算机程序中,也就是用程序语言表示现实的事物。 那么现在间题是如何用程序语言来表示现实事物?现实世界的事物所具有的共性就是每个事物都具有自身的属 性,一些自身具有的行为,所以如果我们能把事物的属性和行为表示出来,那么就可以抽象出来这个事物。 比如我们要表示人这个对象。 ### 在c语言中表示事物,我们可以这么表示: <div class="tip inlineBlock share"> C语言中表示事物时,将属性和行为分离,有可能行为调用出错。 </div> ```C++ #include<stdio.h> #include<string.h> //表示人 struct Person { int age; char name[32]; }; //表示狗 struct Dog { int age; char name[32]; }; void Person_eat(struct Person* p) { printf("%s 在吃饭\n", p->name); } void Dog_eat(struct Dog* p) { printf("%s 在吃骨头\n", p->name); } int main() { Person p1; Dog d1; p1.age = 20; d1.age = 4; strcpy(p1.name, "梦一帆"); strcpy(d1.name, "旺财"); Person_eat(&p1); Dog_eat(&d1); printf("\n\n"); Person_eat(&d1); Dog_eat(&p1); //在C语言里边,狗和人的活动和行为都可以可以互相调用,没有检查函数参数。 return 0; } ``` ### C++中表示事物的方法——类 <div class="tip inlineBlock share"> C++中对事物的封装 将属性和行为封装在一起 </div> * 利用结构题,表示事物。 ```C++ #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstring> using namespace std; //表示人 struct Person { int age; char name[32]; void Person_eat() { cout << name << " 在吃饭" << endl; } }; //表示狗 struct Dog { int age; char name[32]; void Dog_eat() { cout << name << " 在吃骨头" << endl; } }; int main() { Person p1; Dog d1; p1.age = 20; d1.age = 4; strcpy(p1.name, "梦一帆"); strcpy(d1.name, "旺财"); p1.Person_eat(); d1.Dog_eat(); return 0; } ``` * 用C++ 新增 class 即表示 类 <div class="tip inlineBlock success"> 通过类,实例化出一个变量,这个变量叫对象。 </div> <div class="tip inlineBlock share"> * 结构体中所有的成员,默认都是共有的。 * 类中所有成员,默认是私有的,也可以修改成员的访问权限。 * C++将事物的属性和行为封装在一起。 * 类 = 类型(事物的行为和属性) 类实例化出来的变量叫做对象。 * 类里面的函数 可以访问类里面的成员 </div> ```C++ #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstring> using namespace std; //表示人 class Person { //类中的所有成员 访问权限都是私有的 private,我们需要加上public public://公有的 //属性 int age; char name[32]; //行为 void Person_eat() { cout << name << " 在吃饭" << endl; } }; //表示狗 class Dog { //类中的所有成员 访问权限都是私有的 private,我们需要加上public public://公有的 //属性 int age; char name[32]; //行为 void Dog_eat() { cout << name << " 在吃骨头" << endl; } }; int main() { Person p1; Dog d1; p1.age = 20; d1.age = 4; strcpy(p1.name, "梦一帆"); strcpy(d1.name, "旺财"); p1.Person_eat(); d1.Dog_eat(); return 0; } ``` ### 类中的访问权限 | 访问属性 | 属性 | 对象内部 | 对象外部 | | ----------- | ------ | ---------- | ---------- | | public | 公有 | 可访问 | 可访问 | | protected | 保护 | 可访问 | 不可访问 | | private | 私有 | 可访问 | 不可访问 | ```cpp //人的行为 public: void Dese() { cout<<"我最帅"<<endl; } //人的属性 public: int mTall; // 多高,可以给外人知道 protected: int mMoney; // 有多少钱,只能仍儿子孙子知道 private: int mAge; //年龄,不想让外人知道 ``` ### 类的定义规范 类内声明,类外定义。 ```cpp #include<iostream> using namespace std; class Data { private: int num; public: //类中声明 void putNum(); void getNum(int input); }; //类外定义 void Data::putNum() { cout<<num<<endl; } void Data::getNum(int input) { num=input; } int main() { Data p; p.getNum(10); p.putNum(); return 0; } ``` **类的定义在头文件,成员函数是在cpp文件中实现(这里只提一下)** 最后修改:2021 年 07 月 24 日 © 禁止转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏