目录
1.c和c 中struct的区别
2.类的封装
3.类的访问权限
1.c和c 中struct的区别
代码语言:javascript复制c语言中结构体中不能存放函数,也就是数据(属性)和行为(方 法)是分离的 c 中结构体中是可以存放函数的,也就是数据(属性)和行为 (方法)是封装在一起的
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
//c语言不能放函数
struct _stu
{
int a;
int b[5];
};
//c 中可以放函数
struct _stu1
{
int a;
int b[5];
void print_stu()
{
cout << a << endl;
}
};
struct student
{
//学生的属性和数据
int age;
int id;
char name[256];
//操作属性的叫做 方法或行为‐函数
void print()
{
cout << age << id << name << endl;
}
};
void test01()
{
student obj;
obj.age = 10;
obj.id = 20;
strcpy(obj.name, "lucy");
obj.print();
}
int main()
{
test01();
return 0;
}
2.类的封装
c语言中表示事物时,将属性和行为分离,有可能行为调用出错
比如你先定义一个人的属性和行为
代码语言:javascript复制struct Person
{
int age;
char name[128];
};
void Person_eat(struct Person *p)
{
printf("%s 在吃饭n", p->name);
}
然后定义一个狗的属性
代码语言:javascript复制struct Dog
{
int age;
char name[128];
};
void Dog_eat(struct Dog* p)
{
printf("%s 在吃狗粮n", p->name);
}
而测试的时候可以这样
调用了人的属性,在调用狗的行为
代码语言:javascript复制void test01()
{
struct Person p1;
p1.age = 20;
strcpy(p1.name, "bob");
Dog_eat(&p1);
}
c 对事物的封装
因为c 中struct里面可以存放函数,也就是行为,就不会存在上述情况
c 将事物的属性和行为封装在一起
’类和结构体的一个区别在于,类对成员可以进行访问的权限控 制,结构体不可以
类 = 类型 (事物的行为和属性) 类实例化出来的变量叫对象
类中的函数 可以访问类里面的成员
代码语言:javascript复制结构体中所有成员默认都是公有的 类中的所有成员默认是私有的,也可以修改成员的访问权限
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
//struct
//类中的所有成员 访问权限都是私有的 private
class Person
{
public://共有的
//类中的所有成员 访问权限都是私有的 private
//属性
int age;
char name[128];
//行为
void Person_eat()
{
printf("%s 吃饭n", name);
}
};
struct Dog
{
//属性
int age;
char name[128];
//行为
void Dog_eat()
{
printf("%s 吃饭n", name);
}
};
void test01()
{
Person p1;
p1.age = 10;
strcpy(p1.name, "lucy");
p1.Person_eat();
}
int main()
{
test01();
}
3.类的访问权限
代码语言:javascript复制#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string.h>
using namespace std;
class person
{
public:
int mTall; // 多高可以让外人知道
protected:
int mMoney; // 多少钱,只能让儿孙孩子 子类可以访问
private:
int mAge; //年龄不想让外人知道
void show()
{
cout << mTall << " ";
cout << mMoney << " ";
cout << mAge << " ";
}
};
void test01()
{
person p;
p.mTall = 180;
}
int main()
{
test01();
return 0;
}
尽量设置成员变量为私有权限
优点:
对变量的设置时的控制 可以给变量设置只读权限 可以给变量设置只写权限 可以给变量设置可读可写权限