»
(08)C++14 函数、左值右值
(18)C++14 智能指针及引用计数*
(19)C++14 多线程pthread*
(20)C++14 同步锁mutex*
(24)C++中的计时与等待*
(25)C++中的高精度计算*
(27)C++14 std::string*
(31)C++高级技能*
C++中函数的定义方式和C语言中的函数的定义方式一致。在函数的定义中,首先是返回值类型,后面是函数名,然后是括号,括号内是参数类型和参数名,最后紧跟着函数体的代码块。比如:
int main(int argc, char* argv[]){
return 0;
}
要注意的是,在C++14和C99中,函数的尾部参数可以有默认值,这样,在函数调用过程中就可以以更少的参数列表来调用同一个函数。
对于函数的返回值类型不是void的函数,函数体内仍然可以不返回任何值,此时函数的返回值为该数据类型的一个随机值,这就是函数体返回值的默认右值。
左值:可以通过一个名字访问到的内存数据。
右值:除了用地址,没有一个特定的名字访问到的这个值。
左值有Label,Label消除左值就会销毁、就会析构;右值没有Label,赋值操作结束、没有Label保持右值,右值就会自动销毁、就会自动析构。
在右值赋值给未初始化的Label变量时,修改的是Label指向的地址,程序会直接修改Lable指向的地址到右值所在地址。右值的接收必须使用一个未初始化的Label变量接收。C++中唯一的右值就是函数的返回值空间。
当右值赋值给一个已经初始化的Label变量时,会调用该变量的移动赋值函数来移动右值对象的成员数据到此Label变量,随后,右值自动销毁。