表达式与函数
来源:互联网 发布:最大淘宝小号交易平台 编辑:程序博客网 时间:2024/06/11 02:17
1.左值和右值
左值为对象的身份(内存的位置),所有具名变量均为左值,即可寻址。
右值为对象的值(内容)
- 原始字面值,如0,“abc”等
- 表达式返回值
- lambda表达式
- 非引用返回值
2.decltype
左值为引用,右值为类型
3.cout<< i<<” “<<++i<< endl;//结果未定义
4.bool b = true;
bool b2=-b; 仍为true,因为-b不为0
5.模运算
m%(-n) = m%n
(-m)%n = -(m%n)
6.解引用运算优先级
* p++等价于 *(p++)
* iter.empty()等价于 *(iter.empty()) //编译错误
7.转换
- static_cast 不包含底层const的类型转换均可以,不过不会检查错误
- dynamic_cast会检查动态指向转换的正确性,指针返回nullptr,引用会抛bad_cast异常
- const_cast 去除底层const的转换
- reinterpret_cast 底层位转换 (int* —– char*)
8.顶层const无法使函数重载
void fcn( const int i )
void fcn( int i ) //属于重复定义
void fcn( const int &r )
void fcn( int &r) //底层const可以作为重载
9.不要返回局部对象的指针或引用
10.一旦某个形参被赋予了默认实参,则它后面的所有形参都必须有默认实参
11.constexpr和内联函数放在头文件中(即可多次定义)
编译器想要展开函数仅有函数声明是不够的,还需要函数的定义
12.assert(expr)预处理宏
当expr为假时输出信息并终止程序的运行,可以assert(expr&&”出错信息”)输出错误信息便于调试
若定义了NDEBUG则assert什么也不做
13.候选函数与可行函数
①void f()
②void f(int)
③void f(int ,int)
④void f(double,double=3.14)
当调用f(5.6)时,候选函数为(①②③④),可行函数为(②④),最佳匹配为④
14.函数指针与函数返回值
bool (*pf)(…) //函数指针
bool *pf(…) //函数返回值为指向bool的指针
- 表达式与函数
- 函数声明与函数表达式
- 函数声明与函数表达式
- 函数声明与函数表达式
- 函数声明与函数表达式
- 函数声明与函数表达式
- 函数声明与函数表达式
- 函数声明与函数表达式
- 函数申明与函数表达式
- 匿名函数与lamdba表达式
- 函数表达式与闭包
- JS函数与正则表达式
- case表达式 与decode函数
- oracle函数与条件表达式
- javascript中函数声明与函数表达式
- 函数表达式与函数语句的区别
- javascript函数申明与函数表达式
- JavaScript: 函数声明与函数表达式
- 区分联通、移动、电信 号码的策略
- 【方便查】git分支建立删除,打tag
- 纯代码写CollectionViewCell的复用问题
- php计算两个经纬度地点之间的距离
- ORACLE常用的sql语句
- 表达式与函数
- hive学习笔记:FetchTask
- MySQL数据库主从同步
- getApplicationContext()和Activity.this区别
- PHP多进程编程理论+实战
- zabbix Agent端在CentOS6.5上的安装过程
- CPU组合逻辑控制方式
- ddms如何检查是否有内存泄露
- c++模板的特化和偏特化