return, то к моменту получения результата функции весь ее код завершен. Если бы использован co_yield, то к моменту получения результата код функции приостановлен.return функция еще продолжает работать, вызывая деструкторы локальных объектов и выполняя некоторый сервисный код. Только после этого результат из строки с кодом return будет передан в вызвавший функцию код. 1.5f?mult() у тебя только один первый аргумент имеет тип float, все остальные - double. strlen() вообще игнорирует терминальный символ в своей работе. Но функция его не учитывает только в своем результате, что и отражено в документации функции.strlen() при своей работе игнорирует терминальный символ. size_t size = 80;
string_ = new char[80]{""};size если она не используется?String(const char* string) {
delete[] string_;
size_t size = strlen(string);
strcpy_s(string_, size, string);
}delete[] string_; в этом месте будет означать delete[] nullptr;, т.е. нонсенс. Оператор delete[] ничего не освободит. В это время, strcpy_s(string_, size, string); будет означать strcpy_s(nullptr, size, string);, что приведет к падению.String(const String &str) {
size_t size = strlen(str.string_) + 1;
strcpy_s(string_, size, str.string_);
}resize() и reserve(), которые и должны управлять подконтрольным строке буфером памяти.concat() должен быть примерно таким:String String::concat(const String& other) const
{
String result;
result.reserve( length() + other.length() + 1 );
result = *this;
result += ' ';
result += other;
return result;
} String. return или относительно места получения результата?return или закончится ли выполнение кода функции сразу после получения возвращенного ей значения? /dev/null, системный вызов вывода в консоль просто шунтируется, поэтому время работы так кардинально упало. 59мсек против 381мсек выглядит более правдивым, но все равно показывает только время системных вызовов. Можно даже предположить, что на питоне такое время получается потому что в его недрах делается немного больше системных вызовов.хз, но факт
а вот под его пример подогнать
InputSymbol, тип у нее сделай void и возвращать из нее больше ничего не надо. В конце функции просто освобождай память после вывода буфера в консоль.
Всегда можно было. Это стандартный синтаксис.
case- это просто метка, на которую исполнение прыгает при соответствии условия. Локальность на всеcaseедина - это локальностьswitch. Далее, после каждогоcaseуже можно организовать свою локальность. Собственно, именно поэтому определение локальных переменных просто подcaseи сулит проблемами.Возможно это тебя шокировало, но таков синтаксис C++. :)