场景:
1.C++的类构造函数是复杂的语法特性,特别是带一个参数的构造函数,默认情况下会在多种情况下自动调用,让你措手不及。
2.explicit关键字就是为了阻止这种自动调用。
看一下代码,不多说了.
#include <stdio.h>
#include <iostream>
#include <string>
using std::cout;
using std::endl;
class A
{
public:
A(int i)
{
i_ = i;
cout << "A" << endl;
}
~A()
{
cout << "~A" << endl;
}
virtual bool Init()
{
cout << "A:Init() i: " << i_ << endl;
return true;
}
private:
int i_;
};
class B
{
public:
explicit B(int i)
{
cout << "B" << endl;
i_ = i;
}
~B(){
cout << "~B" << endl;
}
bool Init()
{
cout << "B:Init() i: " << i_ << end
本文探讨了C++中一种不常见的语法特性——explicit关键字,该关键字用于阻止带一个参数的构造函数在某些情况下的自动调用。通过示例代码,解释了explicit如何防止意外的类型转换,以增强代码的清晰性和安全性。
订阅专栏 解锁全文
1130

被折叠的 条评论
为什么被折叠?



