Lvalues and Rvalues
说明: 本文探讨的是 C++11 以来的值类别
关于左值和右值,在不对其进行详细的划分时,简单的分类方法包括
- 左值持久,右值短暂
- 能取得地址得通常是左值,反之通常是右值(这一方法启示我们一个表达式的类型与其是左值还是右值无关,即相同类型的表达式既可以是左值也可以是右值)
右值引用是必须绑定到右值的引用,通过&&
获取右值引用
说明: 本文探讨的是 C++11 以来的值类别
关于左值和右值,在不对其进行详细的划分时,简单的分类方法包括
- 左值持久,右值短暂
- 能取得地址得通常是左值,反之通常是右值(这一方法启示我们一个表达式的类型与其是左值还是右值无关,即相同类型的表达式既可以是左值也可以是右值)
右值引用是必须绑定到右值的引用,通过&&
获取右值引用
在了解创建对象的方式之前,首先了解一下初始化和赋值两个操作,
让人困惑的是=
既可以用于初始化,也可以用于赋值,不要认为初始化和赋值是相同的操作(对于内置类型看不出这一区别,但是对于类的对象而言,这涉及的就是 =
到底使用的是拷贝构造函数还是拷贝赋值运算符了)
- CUDA C只是对标准C进行了语言级的扩展,通过增加一些修饰符使编译器可以确定哪些代码在主机上运行,哪些代码在设备上运行
- GPU计算的应用前景很大程度上取决于能否从问题中发掘出大规模并行性
高性能计算的第一性原理:访存优化。所有的努力(优化硬件设计,优化算法)都是在试图解决内存墙。