c++神奇的写法(一)
来源:互联网 发布:挖矿用什么软件 编辑:程序博客网 时间:2024/06/09 21:36
最近看《c++primer》一书,除了学到很多基础知识,还学到很多很神奇的写法,接下来就来总结一下,感觉就像黑魔法一样,虽然应该很少机会会用到:)
变量和基本类型
auto类型说明符
- 作用:能让编译器替我们去分析表达式的类型
- 注意点:
- auto定义的变量必须有初始值
- 使用auto也能在一条语句中声明多个变量,但是他们的类型必须相同
- auto未必会推断出正确的类型
- 当引用被作为初始值时,编译器会以引用所指的类型作为auto的类型
- auto一般会忽略顶层const,但会保留底层const
- 如果希望保留引用或顶层const的话,要明确指出来
int a = 1,&b = a; const int c = 1,&d = c; auto x_1 = a; //x_1 is int auto x_2 = b; //x_2 is int auto x_3 = c; //x_3 is int auto x_4 = d; //x_4 is int auto x_5 = &a; //x_5 is a pointer to int auto x_6 = &c; //x_6 is a pointer to const int const auto x_7 = d; //x_7 is const int auto &x_8=c; //x_8 is a reference to const int const auto &x_9=32; //x_9 is a reference to const int
(c++11标准)
decltype类型指示符
- 作用:希望从表达式推断出要定义的类型,但不用表达式的值初始化变量
- 注意点:
- 不会忽略顶层const和引用
- 有些表达式会给decltype一个引用的类型
- decltype((variable))的结果永远是引用,decltype(variable)的结果只有当variable是一个引用时才是引用,因为(variable)会看成是一个表达式
*当我们对某个函数用decltype时,得到的是function type,而不是a pointer to function
字符串、向量和数组
标准库函数begin()和end()
- 作用:返回指向首指针和尾后指针
- 注意点:定义在iterator头文件
使用数组初始化vector对象
- 步骤:
int int_arr[ ]={0,1,2,3,4,5}; vector<int> ivec(begin(int_arr),end(int_arr));
- 注意点:不允许使用一个数组初始化另外一个数组,也不允许使用vector对象初始化数组,但是可以用数组来初始化vector对象
用new动态分配内存
- default initialized(会导致built-in-type对象有undefined值)
int *pi = new int; // pi指向uninitialized int string *ps = new string; // ps指向空string
- direct initialized(和copy initialized相对的那个)
int *pi = new int(1024); string *ps = new string(10,'9');
- list initialized
vector<int> *pv = new vector<int>{0,1,2,3,4,5};
- value initialized
string *ps = new string(); // ps指向空string int *pi = new int(); // pi指向0
- auto initialized
auto p1 = new auto(obj);
阅读全文
0 0
- c++神奇的写法(一)
- 神奇的C语言一:函数指针
- 神奇的汇编(一)
- 神奇的 BlocksKit (一)
- 神奇的 BlocksKit (一)
- 神奇的 BlocksKit (一)
- hjr教程-C++(一):面向对象类的写法
- hdu5361 In Touch 神奇的dij,神奇的写法
- ACdream oj C - 神奇的%系列一 (水题系列--略坑)
- 神奇的页面滚动控制(一)
- 神奇的贝叶斯定理(一)
- CSS 神奇的border(一)
- 神奇的 LitePal 操作数据库(一)
- 神奇的%系列一
- 神奇的C#。。
- 神奇的C&CPP
- C语言入门一:C语言的main函数写法
- 神奇的卷积神经网络(一)
- Google源码 -- 打Log新技巧
- TCP四次挥手
- 三、使用特性、属性和数据
- Oracle 临时表操作
- Java常用API包及骚操作
- c++神奇的写法(一)
- Kali下安装mitmf错误解决办法(其他系统可能同理)
- maven 遇到failOnMissingWebXml有关问题解决方法
- 二叉树的遍历
- 20170923数据仓库学习总结
- python3类的详解,源代码可以直接复制调试
- 归并排序
- 知识点
- apue 学到的几个unix命令