变量和基本类型
C++支持两种初始化的方式:
复制初始化(=)
直接初始化(初始化式放在括号中)
int val=1024;//复制初始化
int val(1024);//直接初始化
同时,直接初始化提供了一种重复多次初始化的方法(适用于数组初始化,不需要使用循环赋值初始化)
std:string all_nines(10,'9');//all_nines="9999999999"
应当注意的是:复制初始化中的"="不是复制的一种形式,在C++中,复制初始化与赋值是两种不同的操作。
初始化的重要性
未初始化的变量常常会引起运行问题,因而使用变量时的初始化非常重要。但也存在一些例外:一些类提供了默认构造函数,定义这些变量时,不需要显式地初始化变量,比如string类。
std::string empty;//这里定义的变量empty是一个空串
声明和定义
关键字extern声明不是定义,也不分配存储空间,只说明该变量定义在程序的其他地方,常用于多个文件联合编译时,其中一个文件使用另一个文件中定义的变量时使用。
变量名的作用域
#include<iostream>
int glb=0;
int main()
{
int sum=0;
for(int val=1;val<=10;++val)
{
sum+=val;
}
}
这里的sum作用域是整个main函数内,是局部变量。而glb是全局变量,作用域是整个程序。
与通常我们认识有出入的是:变量val定义在for语句的作用域中,只能在for语句中使用,我们称其作用域为语句作用域。
最佳经验是把一个对象定义在首次使用它的地方是一个很好的方法
类类型
class Sales_item{
public:
private:
};
类定义后的分号常常被忘记是常见错误
类中public定义的成员在程序的任何地方都可以访问;而不是类的组成部分的代码不能访问private成员。
C语言中struct 中所有的成员都是public型。
为了避免名字冲突,预处理器变量(如#define定义的变量)常用全大写字母表示。