C++学习笔记 4—— 处理类型与自定义数据结构

处理类型:类型别名、auto类型、decltype类型。

  1. 类型别名:
    2种形式:
    1)typedef
typedef double w;

这条语句不是声明变量,而是用w作为double的别名。
2)using

using  SI = Sale_item;//SI是Sale_item的别名

指针、引用和别名

typedef char *pstring;//pstring是指向char的指针
const pstring cstr = 0;//cstr是指向char的常量指针
const pstring *ps;//ps是一个指针,指向“指向char的常量指针”

注:如上,当别名中有指针符号(解引用符*),表示该别名的基本类型是指针,而不能简单的用pstring去改写。

  1. auto类型说明符
    让编译器通过初始值来推断变量的类型。
    1)必须有初始值
    2)该语句中所有变量的初始基本类型都必须一样
    3)推断出的类型和初始值类型并不完全一样
    3.1)当引用用作初始值时,以引用的对象的类型作为auto的类型
    3.2)一般auto会忽略顶层const
    3.3) 希望推断出的auto类型是一个顶层const,需明确指出
    3.4)当设定引用的类型是auto时,不再使用忽略
const int ci = i,&cr = ci;
auto  b = ci;//b是int型,忽略顶层
auto  c = cr;//c是int型,忽略
auto  d = &i;//d是整形指针,整数地址即是指向整数的指针
auto  e = &ci;//e是指向整数常量的指针,对常量对象取地址是底层
const auto f = ci;//f是const int
auto &g = ci;//g是整型常量引用
auto &h = 42;//错误,不能为非常量引用绑定字面值
const auto &j =42;//正确
auto k = ci,&l = i;//k为int,l为int型引用
auto &m =ci,*p = &ci;//m为对整型常量的引用,p是指向整形常量的指针
auto &n = i,*p = &ci;//错误,i是int,&ci为const int

注:&和*只从属于某个声明符,而不是基本数据类型的一部分。

  1. decltype类型指示符
    作用:选择并返回操作数的数据类型
    1)使用的表达式是一个变量,则decltype返回该变量的类型
    2)使用的表达式不是变量,则返回表达式结果对应的类型
    3)表达式得内容是解引用操作,则得到引用类型
    4)表达式如果加上括号,结果是引用
decltype (f()) sum = x;//sum的类型是f()函数的返回类型
const int ci =0 ,&cj = ci;
decltype (ci) x = 0;//x的类型是const int
decltype (cj) y =x;//y的类型是const int&,y绑定到变量x
decltype (cj) z;//错误,z为引用,必须初始化
int i =42,*p = &i,&r = i;
decltype (r+0)  b;//加法的结果是int,b为一个未初始化的int
decltype (*p) c;//错误,c是一个int&,必须初始化
decltype ((i)) d;//错误,d引用,未初始化
decltype (i) e;//正确,e未初始化的int

自定义数据结构:

类:以struct关键字开始

头文件:、
1)类通常定义在头文件中
2)头文件名与类名一样
3)头文件中也能使用其他的头文件
4)预处理器
#ifndef 头文件名(类名)注:一般大写
#define 头文件名

#endif

5)头文件不能包含using 声明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值