Основываясь на моем чтении, следующий код:
string aggregate = "give" + 'n';
Должен выдать результирующую строку со значением:
"данное".
Вместо этого он производит мусор,Почему не происходит следующее?
"give" преобразуется в std :: string через конструктор, который принимает указатель на массив символов.
Перегрузка '+', которая принимает std :: string и вызывается символ, возвращая новую строку.
Я основываю свою теорию на this man page.
Теперь я слышал, что первый аргумент перегруженного оператора не является кандидатом на преобразование конструктора, если оператор является членом класса.Мне кажется, я читал это в Кениге и Му.Но в этом случае я понимаю, что оператор «+» не является перегрузкой.
Я понимаю, что это кажется нелепым чрезмерным усложнением, но мне нравится знать FOR SURE что происходит, когда я пишу код.