Ответы пользователя по тегу C++
  • Почему не получается полностью перегрузить оператор =?

    @res2001
    Developer, ex-admin
    В первом случае с ошибкой - у оператора присваивания другая сигнатура - там должна быть ссылка. В вашем случае как-то так:
    void operator=(const char *& cstr)
    Компилятор не находит подходящего оператора присваивания, отсюда ошибка.
    Во втором случае - вы сделали подходящий конструктор и компилятор им воспользовался. Но лучше этот конструктор определить как конструктор копирования:
    MyExpirementalString(const char *& cstr)
    Ответ написан
    Комментировать
  • Какой результат будет?

    @res2001
    Developer, ex-admin
    Обычно такую конструкцию используют для преобразования числа из строкового представления в числовое. Например функции типа atoi как раз используют такой подход.
    Ответ написан
    Комментировать
  • [linux] как выделить больше памяти/ресурcов для приложения?

    @res2001
    Developer, ex-admin
    Распараллеливать смысла нет - дисковые операции плохо паралляться, т.к. диск - медленное устройство. Основной тормоз в вашем случае именно он. Читайте не построчно, а большими блоками, кратными размеру кластера, например по 4/8/16Кб, этим сократите количество дисковых операций. Код конечно усложниться. В прошлом вопросе вам Oleg Shevelev это уже писал.
    Для распараллеливания можно использовать асинхронный IO, но, имхо, это еще больше усложнит код, скорее всего для вашей задачи это не нужно (должно помочь чтение большими порциями), т.к. дальнейшие операции с прочитанной строкой тривиальны.
    И кстати, можно не делать чтение файла на С++, если хорошо знаете Матлаб делайте на нем по тому же алгоритму - т.к. дисковые операции основной тормоз, то преимущества от использования С++ практически не будет.

    А вообще система отдает программе столько ресурсов сколько ей требуется, если ресурсов не хватает - обычно программа завершается с ошибкой.
    Ответ написан
    6 комментариев
  • Упражнение из книги Страуструпа. Программа мини-калькулятор. Цифры записанные в строковом формате. Что имеется ввиду в данном контексте?

    @res2001
    Developer, ex-admin
    Числа в строковом формате - да просто string. Чтоб производить над ними арифметические действия нужно преобразовать в число - см. std::atoi и т.п.
    Немного забегая вперед - преимущество ввода в строковом формате в том, что можно все выражение записать в одной строке, а потом эту одну строку парсить. Т.е. можно сделать универсальный калькулятор, которые воспринимает не два аргумента и операцию, а сложные выражения. Кроме простых действий в этом случае в калькулятор можно прикрутить вычисления разнообразных математических функций и т.п.
    Ответ написан
    Комментировать
  • Причина бесконечного вывода несвязанных символов?

    @res2001
    Developer, ex-admin
    Причин много:
    1.В функции addressSearch в цикле ты читаешь в name ввод пользователя в цикле, затем присваиваешь адрес name в массив. Тут ошибка в том, что name у тебя все время одна и та же переменная и весь массив у тебя будет заполнен одним и тем же значением - адресом name. На каждой итерации цикла после ввода, name будет иметь свое значение, но в следующей итерации это значение затрется следующим вводом. Таким образом в address на выходе из функции ты будешь иметь в каждом элементе адрес name, который ссылается на один и тот же объект, содержащий последний ввод пользователя.

    2.В функции addressSearch переменные name и address объявлены как локальные, после выхода из функции этих переменных уже не существует, а ты возвращаешь из функции адрес не существующей переменной. Поэтому и бардак в выводе.
    Ответ написан
    1 комментарий
  • Какую выбрать среду для написания кода на С++?

    @res2001
    Developer, ex-admin
    А отлаживать то же в notepad++ будешь? А контекстная справка и прочие плюшки?
    У микрософта всегда была хорошая среда разработки. Не так уж там все и сложно.
    Из других вариантов: NetBeans, Eclips. Но по мне для винды VS лучше.
    Ответ написан
    Комментировать
  • Как конкретного наследника связать с конкретным родителем?

    @res2001
    Developer, ex-admin
    А если с наследованием, то СОМ1 и СОМ2 тут явно лишние - все действия надо делать через Devы.
    Ответ написан
    Комментировать
  • Наследование интерфейсов С++?

    @res2001
    Developer, ex-admin
    В go() передается указатель на IServer, а в iServer нет метода start.
    Ответ написан
    2 комментария
  • Будет ли рассчитано значение выражения strlen("str") на этапе компиляции или при выполнении?

    @res2001
    Developer, ex-admin
    Вряд ли.
    Ответ написан
    Комментировать