C++ primer 随笔(2)(变量和基本类型)

变量和基本类型

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=0int 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定义的变量)常用全大写字母表示

猜你喜欢

转载自blog.csdn.net/lxx909546478/article/details/87918826