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的区别

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;
}
上一篇下一篇

猜你喜欢

热点阅读