侧边栏壁纸
  • 累计撰写 25 篇文章
  • 累计创建 11 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

C++ 中的一些知识点总结

LinJHS
2023-07-27 / 0 评论 / 0 点赞 / 31 阅读 / 0 字 / 正在检测是否收录...

C++ 中的一些知识点总结

01 static

01.1 静态全局变量

static int s_Variable = 5;
  1. 【初始化】如果没有显式的初始化,则自动被程序初始化为 0
  2. 【可见性】在声明它的整个文件中都是可见的,而在文件之外是不可见的;
  3. 【内存】在全局数据区分配内存;
  4. 【同名冲突】其他文件中可以定义同名 int 型变量 s_Variable,不会冲突(注:不能有两个同名的全局变量);

01.2 静态局部变量

  1. 【初始化】如果没有显式的初始化,则自动被程序初始化0;静态局部变量在程序执行到该对象声明时,会被首次初始化,其后运行到该对象的声明时,不会再次初始化,只会被初始化一次
  2. 【可见性】不能被其作用域之外的其他模块调用;
  3. 【内存】在全局数据区分配内存;
  4. 【生命周期】不管是全局还是局部,其生命周期与程序相同;

01.3 静态函数

  1. 【作用域】作用域只在声明它的文件当中,不能被其他文件引用,其他文件可以定义同名的全局函数;

01.4 静态成员变量

class Entity
{
    static int x;
    const static int y;
};

int Entity::x; // 初始化静态成员变量
const int Entity::y = 5; // 定义的时候也要写 const

int main()
{
    Entity::x = 5;
    return 0;
}
  1. 【共享】静态成员变量独立存在,属于类而不属于对象,类的所有的实例共享同一个 static 类成员;
  2. 【初始化】静态数据成员必须显式的初始化分配内存,类内声明类外定义;
  3. 【内存】在编译阶段就分配好空间,对象还没创建的时候就有了空间,存储在全局数据区
  4. 【权限】他们仍然遵从 public/private/protected 规定的权限

01.5 静态成员函数

  1. 【调用】静态成员函数多了一种调用方式,在没有实例化的类对象的条件下可以调用类的静态成员函数;
  2. 【访问】静态成员函数中没有隐含的 this 指针,所以静态成员函数不可以操作类中的非静态成员,只能访问 static 修饰的类成员;
  3. 【声明】静态成员函数不能声明const virtual volatile
// 一个简单的用法
class Singleton
{
public:
    static Singleton& Get()
    {
        static Singleton instance;
        return instance;
    }
    void Hello() {}
};

int main()
{
    Singleton::Get().Hello();
}

02 枚举类型 enum

02.1 作用域

// 默认从 0 开始
enum color { RED, GREEN, BLUE };
color col = RED;
color col = color::RED;
// 限定作用域
enum class color { RED, GREEN, BLUE };
// color col = RED; // 错误!
color col = color::RED;

// 也可以在类内
class Entity
{
public:
    enum Level { Err, Warn, Info };
};
// 使用
Entity::Err;

02.2 初始化

// 从 5 开始
enum Example { Val_1 = 5, Val_2, Val_3 }
// 全部指定
enum Example { Val_1 = 3, Val_2 = 7, Val_3 = 9 }
// 指定部分,此时,Val_2 为 4
enum Example { Val_1 = 3, Val_2, Val_3 = 7 }
// 重复指定
enum Example { Val_1 = 3, Val_2 = 7, Val_3 = 3 }

02.3 指定枚举类型

// 注意,不能指定非整数类型
enum color:unsigned long
{
    RED = 1,
    GREEN = 5,
    BLUE = 7
};

02.3 声明与赋值

类似结构体

enum color { RED, GREEN, BLUE };
color c = RED;

03 类

03.1 构造函数与析构函数

这里只介绍部分用法

// 不希望创建实例
class Entity
{
private:
    // Entity(); // 也可以写在 private 里隐藏构造函数
public:
    Entity() = delete; // 不允许构造函数
    static int Get() { /* ... */ }
};
// 初始化
class Entity: public A // 继承
{
private:
    A a;
public:
    Entity(int a, int b, int c, int d)
        : A(a, b) // 初始化基类的成员数据
        , a(c, d) // 初始化成员的数据
    { }
};

析构函数没有参数,不能被重载

先到这里吧,以后再说。


参考链接:

  1. c++——static 总结 https://blog.csdn.net/www_dong/article/details/116102066
  2. c++ static 静态变量、静态函数 https://blog.csdn.net/baidu_16370559/article/details/91781127
  3. C++之静态成员变量 https://blog.csdn.net/z1zyy/article/details/128038036
  4. https://www.bilibili.com/video/BV1rb411d7mS
  5. static 成员函数不能被声明为 const virtual volatile 原因 https://blog.csdn.net/Sansipi/article/details/121378929
  6. C++枚举enum使用详解 https://blog.csdn.net/qq_35902025/article/details/127567837
0

评论区