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