Эффективный C ++. Правило 23: Предпочитайте функции, не являющиеся членами, а не дружественные функции

В то время как ломал голову над некоторыми фактами о дизайне классов, в частности, должны ли функции быть члены или нет, я изучил «Эффективный c ++» и обнаружил правило 23, а именно: «Предпочитайте функции, не являющиеся членами, а не дружественные функции». Прочитать это из первых рук с помощью примера веб-браузера имело смысл, однако вспомогательные функции (названные в книге функциями, не являющимися членами, как это) в этом примере изменяют состояние класса, не так ли?

  • Итак, первый вопрос: разве они не должны быть членами?

  • Читая немного дальше, он рассматривает функции STL и, действительно, некоторые функции, которые не реализуются некоторыми классами, реализованы в stl. Следуя идеям книги, они развиваются в некоторые удобные функции, которые упакованы в разумные пространства имен, такие как std :: sort , std :: copy из алгоритма . Например, класс vector не имеет функции sort , и используется функция stl sort , так что она не является членом класса vector. Но можно также распространить те же рассуждения на некоторые другие функции в классе векторов, такие как assign , так что это также не может быть реализовано как член, а как вспомогательная функция. Однако это также меняет внутреннее состояние объекта, например sort, с которым он работал. Так каково же объяснение этой тонкой, но важной (я полагаю) проблемы. сдвинуть только одну длинную строку, где находится курсор. Остальная часть файла останется в своем ...

    Как мне сделать следующее:

    1. быстрее сдвинуть вправо, что-то вроде zw (аналогично zl но переходите по словам)
    2. сдвигает только одну длинную строку, где находится курсор. Остальная часть файла останется на своем месте

    У меня есть .vimrc настройки , установленные nowrap . Это потому, что код выглядит лучше, чем обернутые строки. Но есть проблема с горизонтальной навигацией.

    Я заметил, что ярлык zl (не путайте l (L) с 1), который смещается вправо ( zh в оставил). Я хочу создать программу на C #, которая вводит команды в работающее окно командной строки. Есть указатели? Спасибо, Пол.

    У меня есть окно командной строки, в котором запускается веб-программа. Я хочу создать программу на C #, которая вводит команды в окно запущенной командной строки.

    Есть указатели?

    Спасибо, Пол.

6
задан Groo 13 May 2011 в 09:27
поделиться