C++ primer 第二章 声明 const auto decltype typedef 引用

本文介绍了C++中的声明与定义的区别,const常量的使用规则,包括常量引用、const指针以及顶层const和底层const的概念。还详细讲解了auto关键字自动类型推导的规则,decltype用于获取表达式类型的特性,以及typedef作为类型别名的作用。同时,文中提及指针与引用的不同,如引用必须初始化且不可改变,而指针可以重新赋值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.声明与定义

  1. extern  声明且没分配空间
  2. 定义   需要初始化即分配空间

2.const

常量 const int p   =0;

  1. 初始化之后不可以被修改
  2. 只在文件内有效     多个的话需要extern声明
  3. 该变量必须初始化(可以在运行时初始化)。

引用 

  1. 对常量的引用不能用来改变其初始化的值
  2. 必须是一个常量引用才能指向常量
  3. 允许常量引用绑定非常量 (临时量,能转换到常量引用的类型即可)  

指针  const int *p   指向常量的指针

  1. 不能通过常量指针改变常量的值
  2. 只能用指向常量的指针来存储常量对象的地址
  3. 一直指向常量的指针可以指向非常量类型

常量指针 *const int p

  1. 常量指针必须初始化  且初始化之后不能修改存放在里面的地址
  2. 他存放的地址不变代表指向的对象不变  对象本身内容可以改变

顶层const和底层const

  1. 顶层 指针本身是常量   
  2. 底层 指针指向对象是常量
  3. 拷贝 顶层不受影响  底层 拷贝必须也是底层const

constexpr 

  1. 判断常量表达式
  2. 有constrxpr一定是常量表达式,并且必须用常量表达式初始化
  3. 字面值类型(算数类型,引用,指针,指针初始化nullptr或0)才可以被constexpr定义
  4. constexpr是用来修饰常量指针

3.auto

  1. 必须有初始值
  2. 初始值类型不完全一样(引用)
  3. const 顶层被忽略,底层被保留     若要强调要特别声明 const auto &a=42(一般引用为对象,这种是常量引用)
  4. 初始值需要是同一种类型

4.decltype

  1. 返回操作数的数据类型
  2. 里面是表达式时 是表达式返回完整的类型
  3. 表达式里面有加了一层()就是引用

5.typedef

  1. 类型别名
  2. 别名声明 using SI = Sales_items;

6.指针与引用  *  &

  • 不存在空引用。引用必须连接到一块合法的内存。
  • 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
  • 引用必须在创建时被初始化。指针可以在任何时间被初始化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值