Почему можно писать такие выражения, как строка s = & quot; xxx & quot; в С ++?

Я часто вижу, что:

string str = "123";

Мой вопрос, если string это тип класса, почему мы можем прямо установить его равным "123" Вместо того, чтобы использовать new или напрямую его инициализировать?

Я привык видеть что-то вроде

classType *pt = new classType;
classType pt = classType();

не

classType s = value;

3

Решение

Строковый тип C ++ имеет неявный конструктор преобразования, который принимает в качестве входных данных const char *, Следовательно, допустимо инициализировать строку C ++, используя строку в стиле C, потому что C ++ будет интерпретировать это как вызов конструктора неявного преобразования.

В этом случае код

string str = "123";

эквивалентно

string str("123");

который более явно выглядит как вызов конструктора.

Обратите внимание, что очень редко можно увидеть что-то вроде

classType p = classType();

Более правильный способ сказать это было бы просто написать

classType p;

который неявно вызывает конструктор по умолчанию, без аргументов.

Надеюсь это поможет!

9

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru