
C++
ispurs
努力去做,静等结果发生!
展开
-
shared_ptr智能指针
1. shared_ptr智能指针 shared_ptr智能指针对一个对象采用共享所有权的机制来管理其生命周期,当对象的引用计数变为了0时shared_ptr才会析构其管理的对象 一个shared_ptr的大小是裸指针的两倍,因为其内部包含了两个指针,一个指向该对象的裸指针,另一个是指向该对象的引用计数的裸指针 1.1 通过一个示例简单了解shared_ptr的基本用法 #include <iostream> #include <memory> using namespace原创 2021-07-10 18:45:10 · 264 阅读 · 1 评论 -
GNU C中的__attribute__关键字
__attribute__机制是GNU C中一个非常有用的特性,它可以用来修饰函数、变量和结构体的编译器属性。 __attribute__((noinline)) /* 设置函数为非内联函数 */ __attribute__((always_inline)) /* 设置函数内联 */ __attribute__((weak)) /* 用来声明weak function */ __attribute__((aligned(4))) /* 设置字节对齐 */ __attribute__((packe原创 2021-04-13 10:04:32 · 561 阅读 · 0 评论 -
#、##、__VA_ARGS__
1. #运算符 #预处理运算符可以把参数转换成字符串 #define SQRT(x) printf("the square of "#x" is %d\n", ((x)*(x))) int main() { SQRT(3); return 0; } /* output: the square of 3 is 9 */ 2. ##运算符 ##运算符可以把两个几号组合成一个记号 #define XNAME(n) x ## n XNAME(1)则会被组合成一个新的记号: x1 3. __VA_AR原创 2021-03-02 20:07:28 · 229 阅读 · 0 评论 -
c++显示实例化和显示具体化
1. 实例化(instantiation) 实例化是指编译器使用函数(或者是类)模板为特定类型生成函数(类)定义。编译器不会为函数(或者类)模板生成定义,只有当我们为函数(或者类)模板指定了一个特定类型时,编译器才会生成。编译器为特定类型的函数(或者类)模板生成定义的行为被称为实例化。 template<typename T> void Swap(T & a, T & b) { T temp = a; a = b; b = temp; } void us原创 2021-03-31 22:48:17 · 2228 阅读 · 0 评论 -
类型转换运算符
1、为什么需要类型转换运算符 下面的程序中的类型转换是被编译器允许的,但是这是一个没有意义的转换。为了避免这种情况发生,C++中对类型转换进行了更加严格的限制。 struct Data { int data[100]; }; Data d = { 1, 2.5, 23 }; char * p = (char *)(&d); // 类型转换,转换成字符串 2、C++中的类...原创 2018-09-05 21:47:47 · 303 阅读 · 0 评论