类型别名 易错点记录

《C++primer 第五版》读书小笔记

介绍

类型别名是一个名字,他是某种类型的同义词。

定义方式

1. 传统方式 typedef
typedef double db; 			//db是double 的同义词
typedef db haha,*heihei ; 	//haha是double的同义词,heihei是double * 的同义词
2.c++11新标准中的别名声明
using db = double; //db 是double 的同义词

指针、常量和类型别名(易错点)

先看段简短的代码:

typedef char *pstring; //pstring  是char * 的同义词
const pstring pa = 0;
const pstring *pb;

1.错误理解:

const pstring pa =0 ;  等价于  const char * pa = 0; (错误理解)

按照错误理解去看的话,上述代码中的pa是一个指向char常量的普通指针;pb是一个指针,它的对象是一个指向char常量的普通指针;
2.正确理解
pa是一个指向char对象的常量指针;
pb是一个指针,它的对象是一个指向char的常量指针;
3.原因
声明语句中用到pstring时,其基本数据类型是指针(也就是把pstring当作一个基本类型,不可拆开)。若是将其理解为char *的话,其数据类型就变成了char,而*则成为了声明符的一部分。这样改写的结果是,const char 成为了基本数据类型,显然与使用类型别名的初衷不相符。

最后切记,类型别名是对一个类型的别名,并非只是简简单单的代码上的替换。

欢迎指正和评论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值