Skip to main content

c++ explicit修飾

· One min read

C++中,有所謂的顯性轉換跟隱性轉換

在宣告時,加入explicit 這個關鍵字,可以禁止使用顯性轉換,以下為例

    using namespace std;
class Stack {
public:
Stack(int a){};
};
void Test(Stack b){
}
int main()
{
Stack s1 = 1; //ok
Stack s2 = Stack(12); //ok
Stack s3(s1); //ok
Test(123); //ok
return 0;
}
    using namespace std;
class Stack {
public:
explicit Stack(int){};
};
void Test(Stack b){
}
int main()
{
Stack s1 = 123; //error
Stack s2 = Stack(123); //ok
Stack s3(s1); //ok
Test(123); // error
return 0;
}
Tags: