Jane.T

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Volatile限定修饰符

===========================================================

当一个对象的值可能会在编译器的控制或检测之外被改变时,例如一个被系统时间更改的变量,那么这个变量就应该声明成volatile。

其主要作用是提示编译器,该对象的值可能在编译器未检测到的情况下被改变。因此编译器执行的某些例行优化行为不能应用在已指定为volatile的对象上。

其用法与const非常相似, 如下:

volatile int display_register; //一个int型的volatile对象

volatile Task *curr_task; //一个指向volatile的Task类对象的指针

volatile int ixa[ max_size ]; //一个volatile的int型数组。数组中每一个元素都被认为是volatile的

volatile Screen bitmap_buf; //一个volatile的Screen类对象,它的每个数据成员都被认为是volatile的

 

 

Pair类型

===========================================================

Pair类是标准库的一部分,它可以在单个对象内部把相同类型或不同类型的两个值关联起来。

 

要使用pair类,必须包含头文件:

#include <utility>

 

如下代码创建了一个pair对象author,它包含两个字符串,分别被初始化为“James“ 和“Joyce”:

pair<string, string> author( "James", "Joyce" );

 

我们可以用成员访问符号(member access notation)访问pair中单个元素。它们是firstsecond。如下:

string firstBook;
if(author.first == "James" && author.second == "Joyce")
    firstBook = "Stephen Hero";
 
typedef pair< string, string > Authors; //如果我们希望定义大量相同pair类型的对象,最方便的做法就是用typedef。
Authors proust ( "marcel", "proust" );
Authors joyce ( "james", "joyce" );
Authors musil ( "robert", "musil" );
posted on 2010-03-01 23:24  Jane.T  阅读(396)  评论(0编辑  收藏  举报