随笔分类 -  C++

摘要:在一个类的定义中,关键字 static 声明一个不属于类实例的成员。 一些细节 如果类定义中某个成员的声明说明符包含关键字 static,那么它就是类的静态成员。静态成员的名称不能和包含的类相同。 需要注意的是,在类定义中声明的静态变量是一个声明而不是定义,并且成员可以是一个不完整类型(除了void 阅读全文
posted @ 2023-02-17 15:04 atorli 阅读(110) 评论(0) 推荐(0)
摘要:当没有通过初始化器构造一个对象时,那么将会执行默认初始化。 语法 T object new T 默认初始化出现在以下几种情况中: 当一个自动,静态,或者线程存储周期的变量声明时没有初始化器。 当通过 new 创建一个没有初始化器的动态存储周期的对象。 当一个基类或者非静态成员没有在构造器初始化列表中 阅读全文
posted @ 2023-02-12 09:47 atorli 阅读(185) 评论(0) 推荐(0)
摘要:C++ 中 shared_ptr 对象之间可以共享对象的拥有权,但是这种共享的对象引用在某些情况下可能会引发一些问题。例如,循环引用会造成两个对象之间相互引用,无法删除对象。 一个循环引用的例子 class bar; class foo { public: foo() { } std::shared 阅读全文
posted @ 2023-02-07 21:50 atorli 阅读(612) 评论(0) 推荐(0)
摘要:C++ 中表达式的值类别 C++ 中的表达式有两个属性,分别是值类型(type)和值类别(value category),每个表达式都有着某些非引用类型,且每个表达式都属于三种主要的值类别之一,这三种值类别分别是:左值(lvalue),纯右值(prvalue),将亡值(xvalue)。 泛左值(gl 阅读全文
posted @ 2023-02-07 18:40 atorli 阅读(202) 评论(0) 推荐(0)
摘要:值初始化语法 C++ 中的值初始化语法有以下几种形式 T() new T() Class:Class(...):member(){...} T object{} T{} new T{} Class::Class(...):member{}{...} 其中第4,5,6,7几种语法是从 C++11 之后 阅读全文
posted @ 2023-02-02 15:30 atorli 阅读(155) 评论(0) 推荐(0)