c++ primer 5 第2章 变量和基本类型

来源:互联网 发布:淘宝联盟可以注销吗 编辑:程序博客网 时间:2024/06/05 14:50

    从大体上看,本章主要讲了c++中变量的基本内置类型、复合类型、const限定符及处理类型。

    1.基本内置类型:包括算术类型和空类型


    2.复合类型:包括引用和指针(当然还有其他复合类型)

2.1引用

eg.int a=1;int &b=a;

一般在初始化变量时,初始值会被拷贝到新建的对象中,然而定义引用时,程序把引用和它的初始值绑定到一起,而不是拷贝;

引用其实就相当于一个对象的别名,操作对象的引用就相当于操作对象本身;

引用必须被初始化。


2.2指针

指针本身是一个对象;

无需在定义时为它赋初值;


    3.const限定符:包括const的引用,指向常量的指针和常量指针;顶层const和底层const;constexpr和常量表达式

3.1const与引用和指针

3.1.1const的引用

const int &c=1;//这样也可以

const的引用,即把引用绑定到const对象上。对常量的引用不能被用作修改所绑定的对象。

但是,对const的引用可能引用一个非const对象:

常量引用仅对引用可参与的操作做出了限定,对引用对象本身是否为常量未做限定

eg.int i=42;const int  &r=i;


3.1.2指向常量的指针

指向常量的指针和const的引用类似。只表示不能通过指针来改变所指对象的值,而该对象不一定非得是常量。但是要想存放常量对象的地址,就必须用指向常量的指针。


3.13常量指针

常量指针是指指针本身的值是个常量,即它所存放的地址是不能改变的,但并不意味不能通过指针来修改其所指向的对象,这由对象的类型决定。


3.14顶层和底层const

顶层const表示指针本身是一个常量,底层const表示指针所指向的对象是一个常量。


3.15constexpr

常量表达式是指值不会改变,并且在编译过程中就能得到计算结果的表达式

eg.constexpr int m=20;


    4.处理类型:包括类型别名,auto类型说明符,decltype类型说明符

两种用于定义类型别名的方法:

typedef double wage;

using S=sales_item;


auto 类型说明符:用于通过等号右边的表达式来判断等号左边的对象的类型(编译器完成)

auto 一般会忽略顶层const,保留底层const


dcltype类型说明符:类似auto,但是只取表达式或函数返回值等的类型,而无需接受对应的值。

dcltype((x))得到的一定是引用类型