std :: basic_string имеет такой конструктор:
basic_string( const CharT* s, const Allocator& alloc = Allocator() );
Создает строку с содержимым, инициализированным копией строки символов с нулевым символом в конце, указывающей напо s.
Но важно отметить, что этот конструктор не explicit
, поэтому компилятор может выполнять неявное преобразование строки символов с нулевым символом в конце во время вызова конструктора.
Например, следующий код компилируется без проблем:
class Foo {
public:
Foo(int) {}
};
int main() {
Foo f = 10;
}
Он не скомпилируется, если конструктор записан в виде:
explicit Foo(int) {}