跳至主要內容

C++类

AkashiNeko原创C++class

从结构体到类

在C语言中,结构体用于将不同的类型打包在一起。在C++中,类可以看作一个增强版的结构体,不仅有C语言结构体的所有功能,还可以定义函数,以及许多便利的功能,类中的成员函数也称为成员方法(method)。

class MyClass {

    // 成员函数
    void function();

    // 成员变量
    int i;

}; // 这是一个C++类的声明

使用结构体或类定义变量,不需要像C语言一样使用 struct 关键字修饰,可以直接使用类型名。

// C语言的写法
struct MyStruct st;

// C++的写法
MyStruct var;
MyClass obj;

在C++中,使用类类型创建的变量,称为对象,创建对象的过程称为实例化

访问限定符

C++类使用了访问限定符,限制从类外部对成员访问的权限,从而达到封装的目的。访问限定符有以下3种:

关键字说明访问权限
public公有的✔️从类外可以直接访问
private私有的🔒只能被类中的成员访问,类外不可见
protected保护的🔑能被类中和子类的成员访问,类外不可见

只有被 public 修饰的成员,才可以从类外直接访问,其他修饰的成员则对类外不可见。

class MyClass {
public:
    void f() {
        cout << "qwq\n";
    }
private:
    int a;
    char str[10];
protected:
    int i;
};

// 访问测试
MyClass mc;
mc.func1(); // 可以访问,f 是 "公有的"
mc.a = 10;  // 无法访问,a 是 "私有的"
mc.i++;     // 无法访问,i 是 "保护的"

在C++中,结构体的默认访问权限为 public,类则为 private,类的成员默认无法从外部访问。

类的作用域

C++类定义了一个作用域,域名为类的名称,与命名空间 namespace 类似。

class A {
public:
    static int i;
    using MyInt = int;
};

// 类外访问
A::i = 10;
A::MyInt num = 20;