C++一些语法总结
来源:互联网 发布:人工智能未来的发展 编辑:程序博客网 时间:2024/06/15 08:32
构造函数初始化列表
- 编写类的时候一些成员必须在构造函数初始化列表中进行初始化,const和引用类型的对象,不能对他们赋值,因此需要在初始化列表对他们赋初始值:
- 没有默认构造函数的类类型成员
- const或引用类型成员
- 在初始化列表中,成员被初始化的次序是定义成员的次序
右值引用
- 左值引用是指表达式结束后依然存在的持久现象
- 右值引用是表达式结束时,就不再存在的临时对象
- 区分右值与左值的方法是看能不能对表达式取地址
- 左值引用根据修饰符不同,可以分为非常量和常量左值引用
- 非常量左值引用只能绑定到非常量左值
- 常量左值引用可以绑定到所有类型的值
- 非常量右值引用只能绑定到非常量右值
- 常量右值引用可以绑定到非常量右值和常量右值
- move函数将左值转换为右值
std::move在提高 swap 函数的的性能上非常有帮助,一般来说,swap函数的通用定义如下: template <class T> swap(T& a, T& b) { T tmp(a); // copy a to tmp a = b; // copy b to a b = tmp; // copy tmp to b }有了 std::move,swap 函数的定义变为 : template <class T> swap(T& a, T& b) { T tmp(std::move(a)); // move a to tmp a = std::move(b); // move b to a b = std::move(tmp); // move tmp to b }
ecplicit关键字
- 显式的方式调用,抑制隐式转换
- 一般构造函数前带ecplicit关键字,抑制赋值构造函数到显式构造函数的转换
class test{ public: explicit test(int n){num = n;} private: int num;}int main(){ test t = 12;//错误,不能隐式转换为赋值构造函数 }
0 0
- C++一些语法总结
- Javascript一些语法总结
- 一些C语法回顾
- C语言语法总结
- c的语法总结
- Objective-C语法总结
- Objective-C 语法总结
- C#一些基础语法总结
- ruby的一些语法总结
- PHP总结的一些语法
- Ojbective-C的一些语法
- c的一些基本语法
- Objective-C语法小总结
- object c语法简单总结
- C++/Cli语言语法总结
- C语言基本语法总结
- C与C++语法总结
- Objective-C 特殊语法总结
- 静态库没有更新
- 2014年7月华为校招机试真题1
- 如果本地化自己的iOS App(iOS8 & xcode6)
- 【ThinkPHP】ThinkPHP下载、部署,Helloworld,消除难看的index.php
- 输出链表时倒数第K个结点
- C++一些语法总结
- nyoj 20 吝啬的国度(邻接表+bfs)
- 文章链接
- 画图+使用数组来标记,和图像01存储有点像
- 配置Android的SDK、NDK、ANT
- [OPENGL][转] opengl里的坐标系
- 编程过程中Android项目中R文件忽然丢失
- iOS 本地化 国际化 相关的工具,命令,和可能遇到的问题
- UITextField 使用