1.7 时间延时器和类的别名
1. 時間延時器
//等待一段時間,編寫延時器
#include <iostream>
#include <ctime>
using namespace std;
//time.h中關于CLOCKS_PER_SEC的定義是: #define CLOCKS_PER_SEC 1000
int main()
{cout<<"Enter the delay time, in seconds: ";float secs;cin>>secs;//CLOCKS_PER_SEC是指每秒有CLOCKS_PER_SEC個系統時間單位,time.h中關于CLOCKS_PER_SEC的定義是: #define CLOCKS_PER_SEC 1000//也就是說系統的時間單位是1msclock_t delay=secs*CLOCKS_PER_SEC; cout<<"starting/a/n";//clock()函數返回系統時間,由于CLOCKS_PER_SEC為1000,所以clock返回的時間以ms為單位,返回類型在有些系統上是long,也可能是unsigned long//此返回類型的別名為clock_t,它在此處的定義是: typedef long clock_t;也就是long的別名clock_t start=clock();while(clock()-start<delay);cout<<"done/a/n";system("pause");return 0;
}
2. 類的別名. 有兩種方法創建類的別名: 一種是使用預處理器, 另一種是使用關鍵字typedef.
??? 使用預處理器.?#define?Name char, 這樣我們就可以用Name來聲明char類型數據, 例如Name ch就相當于char ch. 預處理器將在編譯程序時遇到Name時就都用char替換.
??? 使用關鍵字typedef. 例如要將Name作為char的別名, typedef char Name;?這樣, 就可以用Name來聲明char類型數據, 還有更多的例子,例如 typedef char * Name_pointer; 用Name_pointer可以聲明char *類型數據. 當然也可以使用#define來聲明, 比如
#define Name_pointer char *,?但是在連續聲明多個變量時, #define不適用. 例如
??? Name_pointer pa, pb;編譯器將這句轉換成char*?pa,pb; 這樣pa是指針類型數據, 而pb是char類型數據, 但是如果使用typedef就不會發生這樣的問題了. 我們可以這樣理解, #define只是替換, 將一個符號替換成另一個符號, 而且僅僅是位置上的替換, 而typedef是將一個意義替換成另一個意義, 不僅是符號的替換, 更是意義的替換.
???
總結
以上是生活随笔為你收集整理的1.7 时间延时器和类的别名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序编译出错,缺少类型说明符;语法错误
- 下一篇: 1.8 简单的文件输入输出