2017計算機二級C++考點類的轉換
引導語:類的轉換是計算機二級C++的一個考點,以下是本站小編分享給大家的2017計算機二級C++考點類的轉換,歡迎閲讀!
類的轉換
C++的.內部數據類型遵循隱式類型轉換規則。假設某個表達市中使用了一個短整型變量,而編譯器根據上下文認為這兒需要是的長整型,則編譯器就會根據類型轉換規則自動把它轉換成長整型,這種隱式轉換出現在賦值、參數傳遞、返回值、初始化和表達式中。我們也可以為類提供相應的轉換規則。
對一個類建立隱式轉換規則需要構造一個轉換函數,該函數作為類的成員,可以把該類的對象和其他數據類型的對象進行相互轉換。聲明瞭轉換函數,就告訴了編譯器,當根據句法判定需要類型轉換時,就調用函數。
有兩種轉換函數。一種是轉換構造函數;另一種是成員轉換函數。需要採用哪種轉換函數取決於轉換的方向。
轉換構造函數
當一個構造函數僅有一個參數,且該參數是不同於該類的一個數據類型,這樣的構造函數就叫轉換構造函數。轉換構造函數把別的數據類型的對象轉換為該類的一個對象。和其他構造函數一樣,如果聲明類的對象的初始化表同轉換構造函數的參數表相匹配,該函數就會被調用。當在需要使用該類的地方使用了別的數據類型,便宜器就會調用轉換構造函數進行轉換。
#include iostream.h
#include time.h
#include stdio.h
class Date
{
int mo, da, yr;
public:
Date(time_t);
void display();
};
void Date::display()
{
char year[5];
if(yr<10)
sprintf(year,0%d,yr);
else
sprintf(year,%d,yr);
cout< }
Date::Date(time_t now)
{
tm* tim=localtime(&now);
da=tim->tm_mday;
mo=tim->tm_mon+1;
yr=tim->tm_year;
if(yr>=100) yr-=100;
}
int main()
{
time_t now=time(0);
Date dt(now);
lay();
return 0;
}
本程序先調用time()函數來獲取當前時間,並把它賦給time_t對象;然後程序通過調用Date類的轉換構造函數來創建一個Date對象,該對象由time_t對象轉換而來。time_t對象先傳遞給localtime()函數,然後返回一個指向tm結構(time.h文件中聲明)的指針,然後構造函數把結構中的日月年的數值拷貝給Date對象的數據成員,這就完成了從time_t對象到Date對象的轉換。
-
2017計算機二級C++強化練習題
引導語:如何準備計算機二級C++,當然是多考多練,以下是本站小編分享給大家的2017計算機二級C++強化練習題,歡迎練習!1).以下敍述中正確的是()A.構成C++語言程序的基本單位是類B.可以在一個函數中定義另一個函數()函數必須放在其他函數之前D.所有被調用的函數一定要...
-
2023年計算機二級office考試內容
在各領域中,我們總免不了要接觸或使用試題,藉助試題可以對一個人進行全方位的考核。大家知道什麼樣的試題才是規範的嗎?以下是小編幫大家整理的2023年計算機二級office考試內容,僅供參考,歡迎大家閲讀。考試內容1:一、計算機基礎知識1.計算機的發展、類型及其應用領...
-
計算機二級模擬試題及答案大綱
1、在面向對象方法中,不屬於對象基本特點的是A)一致性B)分類性C)多態性D)標識唯一性【答案】:A對象的基本特點:①標識唯一性;②分類性;③多態性;④封裝性;⑤模塊獨立性好。2、查詢所有目前年齡是22歲的學生信息:學號,姓名和年齡,正確的命令組是TEVIEWAGE_LISTAS;SELE...
-
2016年計算機二級C++逗號操作符應用方法詳解
不少C++newbie都會問到這問題,大家對+-*/自然是認識的了,對其他的%!&|之類的也不覺得陌生,但是逗號操作符?可能有一半的人會説不清楚它到底是幹啥的。其實,我們是經常會用到逗號操作符的,但是並不是所有代碼裏出現的逗號都是逗號操作符。讓我們先從一個類的示例...