随笔分类 -  C++

摘要:C++ ECO 是一种对于空类型的内存布局优化策略. 在 C++ 中不允许存在大小为零的类型, 即便是空类也会占有一个字节的大小, 像 void 和没有定义的类型称为「非完备类型」(Incomplete Type). ​ 这带来一个问题, 如果将空类作为成员变量的类型, 则每个成员都会占用至少一个字 阅读全文
posted @ 2024-04-13 15:33 kaleidopink 阅读(22) 评论(0) 推荐(0) 编辑
摘要:在C++中, 当new 操作符接受一个指针作为参数时, 表示在该指针所对应的地址上进行构建. new (ptr) Type(args...); 利用这一点, 我们可以在类的成员函数或者构造函数里对类进行重构: class Base { public: Base() { printf("default 阅读全文
posted @ 2024-01-31 13:27 kaleidopink 阅读(10) 评论(0) 推荐(0) 编辑
摘要:C++ 实现轻量级协程库 context 协程的实现与线程的主动切换有关,当当前上下文可能阻塞时,需要主动切换到其它上下文来避免操作系统将当前线程挂起从而降低效率。 在Linux中定义了ucontext_t结构体来表示线程的上下文结构。 typedef struct ucontext_t { str 阅读全文
posted @ 2022-06-17 20:34 kaleidopink 阅读(754) 评论(0) 推荐(0) 编辑
摘要:[toc] 语法糖 auto 自动类型推导 可用于推导函数返回值或迭代类型,需要注意的是除了类型信息,其它信息可能会丢失,比如: 1. 指向类型为引用时,推导类型会丢失引用。如果要避免,可手动添加 & 符号避免丢失 2. const/volatile 符会丢失,如果要避免,可手动添加对应 cv 符。 阅读全文
posted @ 2022-06-05 10:56 kaleidopink 阅读(41) 评论(0) 推荐(0) 编辑
摘要:author: lunar date: Sat 31 Oct 2020 09:18:11 PM CST location: Shanghai C++11写IoC框架 阅读全文
posted @ 2020-10-31 21:19 kaleidopink 阅读(486) 评论(0) 推荐(0) 编辑
摘要:使用C++11实现一个轻量级AOP框架 代码和思想来自《深入应用C++11》,代码放在最后。 什么是AOP框架 AOP,即面向切面编程(Aspect Oriented Programming)。这是一种在面向对象的基础上进一步在代码之间解耦的编程思想。 书中以这样一个例子开头,对于每一个业务,都可以 阅读全文
posted @ 2020-10-24 21:23 kaleidopink 阅读(703) 评论(0) 推荐(0) 编辑
摘要:---author: lunardate: Tue 13 Oct 2020 06:43:01 PM CST---## C++11 多线程开发C++11之前,C++对于并发编程并没有提供语言级别的支持。只能像C语言那样使用操作系统提供的POSIX提供的多线程库pthread。C++11之后,C++通过一系列语法支持使得多线程开发变得更容易。温馨提示:如果你是在命令行通过g++编译,需要添加-lpth... 阅读全文
posted @ 2020-10-14 20:18 kaleidopink 阅读(1335) 评论(0) 推荐(0) 编辑
摘要:---author: lunardate: Thu 01 Oct 2020 10:46:38 AM CST---### 模板与泛型编程#### 条款41: Understand implicit interfaces and compile-time polymorphism> 隐式接口受知乎用户"invalid s"启发,感谢。在面向对象编程中,一类重要的思想是:显式接口(explicit ... 阅读全文
posted @ 2020-10-03 17:02 kaleidopink 阅读(177) 评论(0) 推荐(0) 编辑
摘要:---author: lunardate: Fri 25 Sep 2020 07:35:26 PM CST---### CMake 教程(基础篇)> 本系列笔记均来自与github仓库: https://github.com/ttroy50/cmake-examples#### CMake的使用流程一般先写好一个CMakeLists.txt,然后创建一个build目录用于存放二进制文件。来到b... 阅读全文
posted @ 2020-09-30 20:15 kaleidopink 阅读(343) 评论(0) 推荐(0) 编辑
摘要:---author: lunardate: Fri 25 Sep 2020 02:44:31 PM CST---## C++ 智能指针智能指针是C++11新引入的行为类似于指针的类对象,智能指针最大的特点是可以帮助管理动态内存分配的智能指针模板。如果在一个类中定义了指针,我们知道在这个类不再使用时编译器会自动调用其析构函数以释放内存,所以该指针所占用的内存也会被释放。然而,该指针所指向的内存不会被... 阅读全文
posted @ 2020-09-25 19:25 kaleidopink 阅读(624) 评论(0) 推荐(0) 编辑
摘要:---author: lunardate: Wed 23 Sep 2020 09:20:09 PM CST---## 探讨 C++ 新标准> 《C++ Primer Plus》读书笔记本章介绍C++11对C++所做的改进,包括以下主题:- 新的声明方式- 移动语义和右值引用- 新的类功能- Lambda 表达式- 包装器模板 function- 可变参数模板#### 新声明1. `auto` ... 阅读全文
posted @ 2020-09-25 14:49 kaleidopink 阅读(282) 评论(0) 推荐(0) 编辑
摘要:author: lunar date: Wed 23 Sep 2020 06:31:43 PM CST 左值引用与右值引用 左值:可以取地址的,有名字的,非临时的就是左值; 右值:不能取地址,没有名字的,临时的就是右值。 左值的英文缩写为"lvalue", 右值的英文缩写为"rvalue"。这并非很 阅读全文
posted @ 2020-09-23 20:21 kaleidopink 阅读(1544) 评论(1) 推荐(1) 编辑
摘要:---author: lunardate: Wed 16 Sep 2020 03:14:38 PM CST---## 6. 继承和面向对象程序设计### 条款32: Make sure public inheritance models "is-a".如果你令`class D`以public形式继承`class B`, 你便是告诉编译器每一个类型为D的对象同时也是一个类型为B的对象."public... 阅读全文
posted @ 2020-09-21 16:28 kaleidopink 阅读(182) 评论(0) 推荐(0) 编辑
摘要:---author: lunardate: Tue 15 Sep 2020 02:52:32 PM CST---## 5. 实现### 条款26: Postpone variable definitions as long as possible.由于每定义一个变量都会带来构造和析构成本, 所以变量的定义应该尽可能的延后, 延后到不得不用的时候. 因为有时候一个变量可能并没有使用程序就已经离开了控... 阅读全文
posted @ 2020-09-21 16:25 kaleidopink 阅读(160) 评论(0) 推荐(0) 编辑
摘要:This is a test markdown file with categories and tags 阅读全文
posted @ 2020-09-20 23:41 kaleidopink 阅读(91) 评论(0) 推荐(0) 编辑
摘要:author: lunar date: Mon 14 Sep 2020 07:12:16 PM CST 5. 设计与声明 条款20: Prefer pass-by-reference-to-const to pass-by-value 缺省情况下C++会以传值形式作为函数参数, 但是这样会带来巨额的 阅读全文
posted @ 2020-09-14 22:05 kaleidopink 阅读(204) 评论(0) 推荐(0) 编辑
摘要:C++ difference between and from https://www.zhihu.com/question/35614219 對於修飾Object來說 並未區分出編譯期常量和運行期常量 限定在了編譯期常量 所謂編譯期常量即在編譯時就已經確定了的值,而運行期常量只有在運行到某個語句時 阅读全文
posted @ 2020-05-10 20:44 kaleidopink 阅读(88) 评论(0) 推荐(0) 编辑
摘要:How to write MakeFile 1. 程序的編譯. 程序在編譯過程中,編譯器只檢測程序語法,函數和變量是否被聲明。而函數是否被實現的檢測是在鏈接的過程中檢測的。 2. 一個makefile的示例: 從這個makefile的示例中我們可以看出makefile的工作原理。可以將其想象成一個棧 阅读全文
posted @ 2020-02-28 23:46 kaleidopink 阅读(178) 评论(4) 推荐(1) 编辑
摘要:2020年一段令我迷惑的代码 这段代码在gcc中可以编译成功,但是在g++中不行。 阅读全文
posted @ 2020-02-26 20:43 kaleidopink 阅读(356) 评论(0) 推荐(0) 编辑
摘要:C++ static 用法 1. 靜態存儲區:靜態變量存儲的空間分為DATA段和BBS段。DATA段用於存放已經初始化的靜態變量,BBS段存放未初始化的。BBS段在程序開始執行前會被系統自動置為0。於是完成了靜態變量的初始化。 2. c++的static的內部實現機制要求static變量在程序開始執 阅读全文
posted @ 2020-02-13 15:11 kaleidopink 阅读(138) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示