explicit是c++中不太常用的乙個關鍵字,其作用是用於修飾建構函式,告訴編譯器定義物件時不做隱式轉換。舉例說明:
include include
using namespace std;
class person
;int main(int argc,char* argv)
person::person(int age)
person::person(int age,string name)
person p =23;這行**沒任何問題,因為person類中有乙個person(int age)建構函式,gcc、cl等編譯器會隱式呼叫此建構函式建立物件。
如果在person(int age)建構函式前加explicit關鍵字則編譯無法通過。
include include
using namespace std;
class person
;int main(int argc,char* argv)
person::person(int age)
person::person(int age,string name)
編譯時g++編譯器報:
error: conversion fromint' to non-scalar type
person』 requested
C 中explicit關鍵字作用
首先,c 中的explicit關鍵字只能用於修飾只有乙個引數的類建構函式,它的作用是表明該建構函式是顯示的,而非隱式的,跟它相對應的另乙個關鍵字是implicit,意思是隱藏的,類建構函式預設情況下即宣告為implicit 隱式 那麼顯示宣告的建構函式和隱式宣告的有什麼區別呢?我們來看下面的例子 c...
C 中explicit關鍵字的作用
explicit用來防止由建構函式定義的隱式轉換。要明白它的作用,首先要了解隱式轉換 可以用單個實參來呼叫的建構函式定義了從形參型別到該類型別的乙個隱式轉換。例如 class things intcompareto const things other std string m name inthe...
C 中explicit關鍵字的作用
explicit用來防止由建構函式定義的隱式轉換。要明白它的作用,首先要了解隱式轉換 可以用單個實參來呼叫的建構函式定義了從形參型別到該類型別的乙個隱式轉換。例如 class things intcompareto const things other std string m name inthe...