C++ 类和对象 (一)(4)
2022-06-17 本文已影响0人
maskerII
1. 类和对象的概念
类 是自定义数据类型,是由C语言结构体演化而来
对象 是类实例化出的,用数据类型定义的一个变量
class Maker // 这个就是类
{
public:
int a; // 成员变量
void func() // 成员方法
{
cout << "func" << endl;
}
};
int main()
{
Maker m; // m 就是对象
cout << "hhh" << endl;
return EXIT_SUCCESS;
}
2. C和C++中struct的区别
- c语言struct只有变量
- c++语言struct 既有变量,也有函数
3. 类的封装
类的封装是把属性(变量)和方法(函数)封装到类内,然后给这些数据赋予权限
class Maker
{
private: // 私有权限
int id;
string name;
public: // 公有权限
void setM(string Name,int Id){
id = Id;
name = Name;
}
void printMaker() {
cout << "name : " << name << " id: " << id << endl;
}
void getA() {
cout << "Maker a = " << a << endl;
}
protected: // 保护权限
int a;
};
封装的优点
- 防止乱调用函数和变量,出现错误
- 维护代码更方便
4. 类的权限
类的权限分三种:公有权限(public)、私有权限(private)、保护权限(protected)
1. 类外不能访问私有权限的成员
2. 类外可以访问公有权限的成员
3. 类外不可以访问保护权限的成员,但子类的类内可以访问父类的保护权限的成
4. 类内无权限之分,都可以访问
class Maker
{
private: // 私有权限
int id;
string name;
public: // 公有权限
void setM(string Name,int Id){
id = Id;
name = Name;
}
void printMaker() {
cout << "name : " << name << " id: " << id << endl;
}
void getA() {
cout << "Maker a = " << a << endl;
}
protected: // 保护权限
int a;
};
// 继承 ,公有继承 class 子类名:权限 父类
class Son:public Maker {
public:
void func() {
// 下面的这个a是从父类复制过来的
a = 20; // 子类的类内可以访问父类的保护权限的成员
}
void getS() {
cout << "Son a = " << a << endl;
}
};
void test01() {
Maker m;
m.setM("Emily",10);
// m.a; // 类外不可以访问保护权限的成员
m.printMaker();
}
5. 尽量把属性设置为私有权限
1.可以控制属性的读写
2.可以赋予客户端访问数据的一致性
3.可以保护属性的合法性
class Maker
{
private:
string name;
int age;
public:
void setName(string mName) {
name = mName;
}
string getName(){
return name;
}
void setAge(int mAge) {
age = mAge;
}
int getAge() {
return age;
}
};
6. C++ 结构体和类的区别
结构体的默认权限是公有的,类的默认权限是私有的
// 结构体的默认权限是公有的,类的默认权限是私有的
struct Maker1
{
int a;
void func()
{
}
public:
int b;
};
class Maker2
{
int a;
void func()
{
}
public:
int b;
};
int main()
{
Maker1 m1;
Maker2 m2;
m1.b;
m2.b;
m1.a;
// m2.a; 类的默认权限是私有的
return EXIT_SUCCESS;
}