成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

explicit關鍵字 c 中的explicit關鍵字是什么意思知道?

c 中的explicit關鍵字是什么意思知道?關鍵字explicit可以防止轉換構造函數發(fā)生不允許的隱式轉換。聲明為顯式的構造函數不能用于隱式轉換。在C語言中,參數構造函數(或對除第一個參數外的所有

c 中的explicit關鍵字是什么意思知道?

關鍵字explicit可以防止轉換構造函數發(fā)生不允許的隱式轉換。聲明為顯式的構造函數不能用于隱式轉換。在C語言中,參數構造函數(或對除第一個參數外的所有參數都具有默認值的多參數構造函數)承擔兩個角色。

1是構造函數

2是默認的隱式類型轉換運算符。所以,有時候我們寫AAA=XXX這樣的代碼,XXX的類型正好是AAA單參數構造函數的參數類型,編譯器會自動調用這個構造函數來創(chuàng)建AAA對象。它看起來既酷又方便。但在某些情況下(見下面的權威例子),這違背了我們的初衷。此時,我們需要在構造函數前面添加顯式修飾符,以指定只能顯式調用和使用構造函數,而不能隱式用作類型轉換運算符。呵呵,看來還是光明正大為好。顯式構造函數的函數分析:顯式構造函數用于防止隱式轉換。請參見以下代碼:類test1{public:test1(int n){num=n}//普通構造函數private:int num}類test2{public:explicit test2(int n){num=n}//顯式構造函數private:int num}int main(){test1 T1=12//隱式調用其構造函數,成功的test2 T2=12//編譯錯誤,無法隱式調用其構造函數Test2 T3(12)//調用成功。Return 0}test1的構造函數接受int參數。代碼的第19行將被隱式轉換為調用test1的構造函數。test2的構造函數聲明為顯式的,這意味著不能通過隱式轉換調用構造函數,因此第20行將出現編譯錯誤??梢噪[式調用普通構造函數。顯式構造函數只能由display調用。

VB中通用聲明Option Explicit是什么意思啊?有什么作用?

Option explicit通常放在程序和子例程的頂部,告訴VB的解釋器或編譯器:“在使用它之前,所有變量都需要定義。使用optionexplicit可以避免拼寫錯誤、類型錯誤和結果錯誤。使用optionexplicit可以加快程序的運行速度。因為它節(jié)省了動態(tài)分配可變存儲空間的時間和操作尋址時間。沒有預先定義的變量是“variant”變量,它可以存儲各種類型的變量,是最慢的變量類型。使用option explicit,您將預先聲明它們的類型,而不是變量。

為什么復制構造函數不添加explicit前綴?

關鍵字explicit可以阻止“單參數構造函數”用于自動類型轉換(隱式類型轉換)

class test{

private:

int data

public:

test(int data=0){}

test(const test&RHS){}]}

不帶顯式,測試s=4可以編譯并通過

但是對于顯式,測試(4)不是必需的

那么復制構造函數的定義是什么?也就是說,構造函數的參數屬于這種類型。只要此類型的對象用于初始化同一類型的其他對象,將調用復制構造函數。

例如:

test a=4//將不在此處調用復制構造函數

test B=a//將在此處調用復制構造函數

因此復制構造函數中沒有隱式類型轉換問題,因此不需要顯式