C语言封装
属性和行为分开处理了,类型检测不够
typedef struct _Person{ char name[64]; int age; }Person; typedef struct _Aninal{ char name[64]; int age; int type; //动物种类 }Ainmal; void PersonEat(Person* person){ printf("%s在吃人吃的饭!\n",person->name); } void AnimalEat(Ainmal* animal){ printf("%s在吃动物吃的饭!\n", animal->name); } int main(){ Person person; strcpy(person.name, "小明"); person.age = 30; AnimalEat(&person); return EXIT_SUCCESS; }
c结构体中不允许有函数存在,行为要写在外面
导致人类吃狗粮
C++封装
严格类型转换检测,让属性和行为绑定到一起
属性和行为作为一个整体来表示事物
#include <iostream> using namespace std; struct Person { char name[64]; int age; void Eat() { cout << "吃人饭" << endl; } }; void Test() { Person p1; p1.Eat(); }