c++ primer 笔记第二章(二)

2.4 const限定符

const定义的变量不能改变,因此const变量必须初始化。可以使用表达式初始化。

默认状态下const对象仅在文件内有效。

可以在声明和定义都加extern。

练习2.26 (a) 不合法,未初始化 (b) 合法 (c) 合法 (d) 不合法,不能改变const的值。

2.4.1 const的引用

引用绑定到常量上,成为对常量的引用,简称常量引用。

初始化常量引用时可以使用任意表达式,可以不匹配类型。

对常量的引用不要求被引用的对象必须是常量。

2.4.2 指针和const

指向常量的指针,const double pi = 3.14;  const double *cptr = π。

指向常量的指针可以指向非常量。

常量指针必须初始化。const double * const p = π

练习2.27(a) 不合法,引用不能绑定字面量。 (b) 合法 (c) 合法 (d) 合法 (e) 合法 (f) 不合法,未初始化 (g) 合法

练习2.28 (a) 不合法 i是整数对象 cp是指向整型的常量指针 cp未初始化 (b) 不合法 p2未初始化  (c) 不合法 ic未初始化 

(d) 不合法 未初始化 (e)  合法 p是指向常整型的指针

练习2.29 (a) 合法 (b) 不合法 int*指针不能指向const int (c)同b (d)不合法 常量指针不能改变地址 (e) 常量指针不能赋值 (f) const int 不能赋值

2.4.3 顶层const

  顶层const是指指针本身的值不能变,底层const指指针指向的对象是常量。

  执行拷贝时,顶层const被忽略,底层const需要考虑。

  练习2.30 顶层 无 无 无 底层 顶层加底层 底层

2.4.4 constexpr和常量表达式

  常量表达式指不会改变且编译时得到结果的表达式。如字面值。

  constexpr变量,由编译器验证变量是否为常量表达式。使用字面值类型。

  constexpr设置指针为顶层const。

  练习2.32 不合法 constexpr int null = 0, *p = null;

2.5 处理类型

  2.5.1 类型别名

   typedef 使用关键字进行定义,如 typedef double wages; typedef wages base,*p;

   using SI = Sales_item;别名声明。

   符合类型的别名声明容易出错。

  2.5.2 auto类型说明符

   auto 自动推断语句中的变量类型。因此auto变量需要初始值。

   auto声明多个变量,变量类型需要相同。

   auto忽略顶层const,保留底层const。加const保留顶层const。

   练习2.33 TTTFFF

   练习2.35 j:int     k:const int &    p:const int *     j2:const int    k2:const int&

  

   2.5.3 decltype类型指示符

    decltype判断表达式的结果类型,如decltype(f()) sum = x;

    decltype对解引用操作得到引用类型。变量加括号当作表达式,返回引用类型。

    练习2.36 c int 3     d int& 指向a    c 4   a 4

    练习2.37 c int  d int& 指向a

    练习2.38 int a = 3; auto b = a; decltype(a) c = b;

                   const int a = 3; auto b = a; decltype(a) c = b;

2.6 自定义数据结构

    2.6.1 定义Sales_data 类型

        类内初始值与默认初始化。

        练习2.39 visual studio 2013 无提示       

        练习2.40

struct Sales_data {
       std::string bookNo;
       unsigned units_sold = 0;
       double price = 0;
}

    2.6.2 使用Sales_data类

      练习2.41 略

     2.6.3 编写自己头文件

      类通常定义在头文件种,类所在头文件名字应与类相同。

      头文件保护符 #ifndef  xxx #define xxx #endif             

 

猜你喜欢

转载自blog.csdn.net/qq_25037903/article/details/81315375