c++语言封装与c语言封装

c语言的封装属性和行为分开处理,类型检测不够

c++中的封装 严格类型转换检测,让属性和行为绑定到一起,属性和行为作为一个整体来表示生活中的事物。

控制权限:

class和struct是一个意思,唯一的不同 默认权限,

public(公共权限)

struct默认权限是public ,内外部可以直接访问

private(私有权限,子类不可以访问)

class默认的权限是private 私有权限,外部不可以访问,内部可以访问
建议将类的成员变量设置为私有

protected(保护权限,子类可以访问)

protected保护权限 类内部可以访问 当前类的子类可以访问,类外部不可以访问

c中封装

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Person

{

    char name[64];

    int age;

};

struct Dog

{

    char name[64];

    int age;

};
void PersonEat(struct Person* p)
{

    printf("%s 吃饭\n", p->name);

};
void DogEat(struct Dog * d)
{
    printf("%s 吃狗粮\n", d->name);
}
void test()
{
    struct Dog d;
    strcpy(d.name,"旺财");
    DogEat(&d);
    struct Person p;
    strcpy(p.name, "小王");
    //  PersonEat(&p);
    DogEat(&p); 
    //可以正常调用
}

int main()
{
    test();


return EXIT_SUCCESS;
}

c++中封装

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

struct Person

{

    char name[64];

    int age;

    void PersonEat()
    {
        cout << name << "吃饭" << endl;
    }

};
struct Dog

{

    char name[64];

    int age;

    void dogEat()
    {
        cout << name << "吃饭" << endl;
    }

};
void test()
{
    Person p1;
    strcpy(p1.name, "小王");
        p1.PersonEat();
    //p1.DogEat(); //类型错误
}

int main()
{


    test();



    return EXIT_SUCCESS;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容