`
Conviction
  • 浏览: 5874 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

const限定符和引用和typedef

阅读更多

1.定义const对象

 

const int i=10;

 变量i仍然是一个左值,但是现在这个左值是不可修改的,任何修改i的尝试都会导致编译出错。

2.const对象默认为文件的局部变量

非const变量默认为extern。要使const变量能够在其他的文件中访问,必须显示的指定它为extern。

 

3.引用

引用就是对象的另一个名字。在实际程序中,引用主要用作函数的形式参数。

引用是一种复合类型,通过在变量前添加“&”符号来定义。复合类型是指用其他类型定义的类型。不能定义引用类型的引用,但可以定义任何其他类型的引用。

(1).引用是别名

引用只是绑定的对象的名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上。

int ival = 10;
int &refVal = ival;
refVal += 2;		//将refVal指向的对象ival加2
int ival2 = refVal;	//类似的,把ival相关联的值赋给ival2
std::cout<<refVal<<std::endl	                //12
             <<ival<<std::endl			//12
	     <<ival2<<std::endl;			//12

 引用必须要初始化。

(2).const引用(指向const对象的引用)

const引用是指向const对象的引用,const引用时只读的。

非const引用只能绑定到与该引用同类型的对象,const引用则可以绑定到不同但相关的类型的对象或绑定到右值。

double dval = 3.13;
int &ri = dval;	        //错误,非const引用只能绑定到与该引用同类型的对象
const int &rii = dval;	//正确,const引用则可以绑定到不同但相关的类型的对象或绑定到右值

 

 4.typedef名字

typedef通常被用于以下三种目的:

(1)为了隐藏特定类型的实现,强调使用类型的目的。

(2)简化复杂的类型定义,使其更容易理解。

(3)允许一种类型用于多个目的,同时使得每次使用该类型的目的明确。

 

 

 

 

 

分享到:
评论

相关推荐

    非常经典的c++ primer视频教程6-10

    4.2.5 指针和const限定符 4.3 C风格字符串 4.3.1 创建动态数组 4.3.2 新旧代码的兼容 4.4 多维数组 第5章 表达式 5.1 算术操作符 5.2 关系操作符和逻辑操作符 5.3 位操作符 5.3.1 bitset对象或整型值的...

    C++Primer视频(初级)下载地址

    第4章指针和const限定符 33.第4章C风格字符串 34.第4章创建动态数组 35.第4章新旧代码的兼容 36.第4章多维数 37.第5章算术操作符 38.第5章关系操作符和逻辑操作符 39.第5章位操作符 40.第5章赋值...

    C++ primer 第4版 原书+习题解答+源码 清晰pdf

     2.4 const限定符  2.5 引用  2.6 typedef名字  2.7 枚举  2.8 类类型  2.9 编写自己的头文件  小结  术语  第3章 标准库类型  3.1 命名空间的using声明  3.2 标准库string类型  3.3 标准库...

    C++Primer中文版(第4版).part4

     2.4 const限定符  2.5 引用  2.6 typedef名字  2.7 枚举  2.8 类类型  2.9 编写自己的头文件  小结  术语  第3章 标准库类型  3.1 命名空间的using声明  3.2 标准库string类型  3.3 标准库...

    C语言解析教程(原书第4版)(美) 凯利.pdf

    6.19 类型限定符const和volatile 6.20 总结 6.21 练习 第7章 位操作符和枚举类型 7.1 位操作符和表达式 7.1.1 按位求反 7.1.2 补码 7.1.3 位逻辑操作符 7.1.4 左移位和右移位操作符 7.2 掩码 7.3 软件工具:打印int...

    C++ Primer第四版【中文高清扫描版】.pdf

    4.2.5 指针和const限定符 110 4.3 C风格字符串 113 4.3.1 创建动态数组 117 4.3.2 新旧代码的兼容 120 4.4 多维数组 122 小结 124 术语 125 第5章 表达式 127 5.1 算术操作符 129 5.2 关系操作符和逻辑操作符 131 ...

    C++大学教程,一本适合初学者的入门教材(part1)

    5.5 指针与常量限定符 5.6 按引用调用的冒泡排序 5.7 指针表达式与指针算法 5.8 指针与数组的关系 5.9 指针数组 5.10 实例研究:洗牌与发牌 5.11 函数指针 5.12 字符与字符串处理简介 5.12.1 字符与字符串...

    《你必须知道的495个C语言问题》

    1.13 对于用户定义类型,typedef和#define有什么区别? 7 1.14 我似乎不能成功定义一个链表。我试过typedef struct {char *item; NODEPTR next;}* NODEPTR;但是编译器报了错误信息。难道在C语言中结构不能包含指向...

    你必须知道的495个C语言问题

    1.13 对于用户定义类型,typedef和#define有什么区别? 7 1.14 我似乎不能成功定义一个链表。我试过typedef struct {char *item; NODEPTR next;}* NODEPTR;但是编译器报了错误信息。难道在C语言中结构不能包含指向...

    C++大学教程,一本适合初学者的入门教材(part2)

    5.5 指针与常量限定符 5.6 按引用调用的冒泡排序 5.7 指针表达式与指针算法 5.8 指针与数组的关系 5.9 指针数组 5.10 实例研究:洗牌与发牌 5.11 函数指针 5.12 字符与字符串处理简介 5.12.1 字符与字符串...

    宋劲彬的嵌入式C语言一站式编程

    4. 指针与const限定符 5. 指针与结构体 6. 指向指针的指针与指针数组 7. 指向数组的指针与多维数组 8. 函数类型和函数指针类型 9. 不完全类型和复杂声明 24. 函数接口 1. 本章的预备知识 1.1. strcpy与strncpy 1.2. ...

    你必须知道的495个C语言问题.pdf

    const 限定词 1.18 我有这样一组声明:typedef char *charp; const charp p; 为什么是p而不是它指向的字符为const? 1.19 为什么不能像下面这样在初始式和数组维度值中使用const值?const int n=5; int a[n]; 1.20 ...

    -C++参考大全(第四版) (2010 年度畅销榜

    2.5 const和volatile限定符 2.6 存储类限定符 2.7 变量初始化 2.8 常量 2.9 运算符 2.10 表达式 第3章 语句 3.1 C和C++中的真值和假值 3.2 选择语句 3.3 迭代语句 3.4 在选择和迭代语句内声明变量 3.5 跳转语句 3.6...

    Objective-C2.0程序设计

    17.2.1 引用计数和字符串 17.2.2 引用计数与实例变量 17.3 自动释放池示例 17.4 内存管理规则摘要 17.5 垃圾回收 17.6 练习 第18章 复制对象 18.1 copy和mutableCopy方法 18.2 浅复制与深复制 18.3 实现协议 18.4 ...

    明解C语言(第3版)入门篇.[日]柴田望洋(带详细书签).pdf 【半高清】

    函数的传递和const类型的修饰符 168 线性查找(顺序查找) 170 哨兵查找法 172 多维数组的传递 175 6-3 作用域和存储期 178 作用域和标识符的可见性 178 存储期 180 总结 185 第7章 基本数据类型 189 7-1 ...

Global site tag (gtag.js) - Google Analytics