C++数据类型和对象
对象的定义
- 定义一个对象age,编译器会对其**分配空间(初始化)**并赋值。如下
int age=18;
- age对象进行声明(当age对象是在其他源文件中定义的时候需要声明),如下:
extern int age;
用extern关键字,注意一个对象只能被定义一次,但可以被声明很多次。
注意声明格式: extern+数据类型+对象名
作用域的嵌套
int main()
{
int age = 18;
int people ;
extern int age;
{ //作用域的嵌套
int val1=1, val2=3;
//对象val1和val2的作用域从10行(声明处)开始,到12行(所在的域块)结束
people = val1 + val2;
//对象people的作用域从6行开始,到14行结束。
}
}
常量修饰符
用关键字const来保证对象pi不被修改,在此开始任何对pi进行修改的操作都是非法的
const double pi = 3.1415;
const操作必须要保证对象初始化(可以初始化变量),否则非法
int age=10;
const int num0 = age; //此时已经给num0赋值,并且不能被修改。
age=5; //即使age被修改,但是num0已经被初始化,所以num0不受影响
cout<<num0; //结果是10
cout<<age; //结果是5
关键字constexpr同样保证对象不被修改,与const不同的是,constexpr在初始化对象时,必须要给对象赋一个常量值
constexpr int num = 123;
constexpr int num3=num+1 //num必须是const或constexpr类型的常量,以确保num3也是常量。
//如下:
int i=3;
const int j=i+3; //表达式正确
constexpr int j=i+2; //表达式错误,因为i不是一个常量,可能改变,无法确保j是一个不变的constexpr型。
常量分为:编译时常量和运行时常量。如下:
int num=100; //num时编译时常量,即程序在编译的时候就可以获取对应的值
const int num2=num; //num2是运行时常量,即在程序编译的时候不能获取对应的值,在运行到这一行的时候才能获得num2的值