我正在进行一个QT项目,并发现了奇怪的行为:
我有一个类,其中有几个构造函数看起来像这样:
DB_Variable(QString name, QString newValue):
name(name),value_string(newValue), var_type(DB_STRING){}
DB_Variable(QString name, bool newValue):
name(name), value_bool(newValue), var_type(DB_BOOL){}
我现在想使用第一个构造函数创建一个对象,如下:
DB_Variable foo("some_name"," ");
我希望空字符串被解释为QString,但调用了第二个(bool)构造函数。有人能告诉我为什么吗?“”是一个指向空字符串的指针,然后变成了bool而不是字符串吗?
Foo
explicit
关键字会发生什么? - shuttle87QString()
。但是," "
代表一个空格。 - vahanchoexplicit
防止构造函数用于隐式转换,并且不影响应用于其参数的转换。 - Mike Seymourexplicit
的作用,现在我更好地理解它了。 - shuttle87