C语言下的封装和C++语言的封装区别

c语言下的封装

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


struct Person
{
	char mName[64];
	int mAge;
	//PersonEat()c语言中struct里不能添加函数
};
void PersonEat(struct Person* p)
{
	printf("%s 在吃饭\n", p->mName);

}
void text01()
{
	struct Person p1;
	strcpy(p1.mName, "张三");
	PersonEat(&p1);
}
struct Dog
{
	char mName[64];
	int mAge;
};
void DogEat(struct Dog* dog)
{
	printf("%s 在吃粮\n", dog->mName);
}
void text02()
{
	struct Dog d;
	strcpy(d.mName, "旺财");
		DogEat(&d);
		struct Person p1;
		strcpy(p1.mName, "老王");
		DogEat(&p1);
}

int main()
{
	text01();
	text02();
}
//c语言封装 属性和行为分开处理了,类型检测不够

c++下的封装

#define _CRT_SECURE_ND_WARNINGS
#include<iostream>
using namespace std;
struct Person
{
	char mName[64];
	int mAge;
	void PersonEat()
	{
		cout << mName << "在吃饭" << endl;
	}
};
struct Dog
{
	char mName[64];
	int mAge;
	void DogEat()
	{
		cout << mName << "在吃粮" << endl;
	}
};
//c++中的封装 严格类型转换检测 让属性和行为绑定在一起
//属性和行为作为一个整体来表示生活中的事物
//控制权限 public protected private
void text01()
{ 
	Person p1;
	strcpy(p1.mName, "老王");
	p1.PersonEat();
	//p1.DogEat();	 
}
//struct 和class 是一个意思 唯一的不同 默认权限 ,struct是pulic,但是class默认权限是private
class Animal
{
private:
	//如果不声明权限,默认的权限是private
	void eat() { mAge = 100; };
		int mAge;
public:
	int mHeight;
protected://保护权限 类内部可以访问,(当前类的子类可以访问),类外部不可以访问
	int mWeight;
	void  setWeight() { mWeight = 100; };

};
//所谓私有权限 就是私有成员(属性,函数)在类内部可以访问,类外部不可以访问
//公共权限在类外部内部都可以访问
void text02()
{
	Animal an;
	//an.eat();
  //an.mAge();//私有不可以访问到
	an.mHeight = 100;//公有权限在类外部可以访问
	//an.mWeight=100;//保护权限 在类外部不可访问到
}
//public 类内 类外 都可以访问
//protected 类内可以访问,类外不可以访问(子类可以访问)
//private   类内可以访问,类外不可以访问(子类不可以访问)
int main() {
	
	system("pause");
	return EXIT_SUCCESS;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值