BZ易风

导航

 

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();
}

 

posted on 2021-08-19 15:01  BZ易风  阅读(26)  评论(0编辑  收藏  举报