2010-10-11 6 views
0

Можно создать дубликат:
What makes more sense - char* string or char *string?'const Имя & var' или 'const Name & var'?

Извините, если это глупый вопрос, я новичок в этих вещах :-)

Я работаю на C++ код базы, который использует следующие ссылки:

  • const Названиевар
  • Const Имя & вар

Насколько мне известно, они имеют в виду то же самое.

Какая из них является предпочтительной или обязательной?

Мне не нравится двусмысленность выбора того или иного.

Ближайший я нашел этот ответ на http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Reference_Arguments, в котором используется макет & var.

+0

спасибо за любую помощь! :-) – nevernumberone

+0

Если вам не нравится принимать решения о стиле кодирования, вам не понравится C++ или любой из связанных языков (c, java, C# и т. Д.). Но если вы собираетесь следовать чьим-то стандартам, Google - это неплохой путь. –

+0

Я предпочитаю 'type const & var', потому что он поддерживает два модификатора' Type' вместе. – MSalters

ответ

3

С языка или компилятора точки зрения как точно такие же. Для группового проекта вы должны использовать групповой стиль. Для личного проекта вы можете сделать любой выбор.

Хотя это трудно, но на такие темы, как это, я всегда стараюсь помнить Правило № 0 от C++ Coding Standards: 101 Rules, Guidelines, Best Practices:

Не переживайте ерунду. (Или:. Знайте, что не стандартизировать)

Если у меня есть возможность выбирать, то лично я всегда предпочитаю, имеющие имеющие места по обе стороны от «*», «&», «=» и т.д. и так что я пишу это как

const Name & var; 

(Кроме того, я никогда не объявляем две переменные в одной строке.)

0

C++ не интересует пробелы, если вы не шатаетесь в шаблонах и операторах, которые, похоже, для вас ненадолго. Короче говоря, они означают одно и то же, лично я предпочитаю «const Name & var».

+0

На самом деле, C++ немного беспокоится о пробелах внутри и снаружи шаблонов. На самом деле это не большая разница. 'a && b' не совпадает с' a & & b'. 'a >> b' - это не то же самое, что' a>> b'. – MSalters

+0

А, правда. шаблоны и операторы, то, спасибо :) отредактировал. – dutt

0

Это точно так же для компилятора.

Используйте вас как лучший.

Я предпочитаю «константное Имя & вар», потому что он выглядит лучше для двух или более переменных: «Const Имени & вара, & var2, var3;» например.

0

C++ не заботится о белых пространствах, поэтому каждый делает то же самое. Но вы должны использовать, какой бы ни была ваша компания или хост проекта. Например: если бы я работал в Google, я использовал бы макет & var, потому что вам нужно сохранить все в соответствии с их стилем.

2

Эти два эквивалента. Разница лишь в стиле.

const Name &var полезно, если вы оказываетесь объявить несколько переменных в строке:

const Name &var, foo, &bar; 

Foo это имя, но вар и бар ссылки на имя.

Однако объявление нескольких переменных в одной строке, как правило, неодобрительно.

const Name& var уточняет, что мы имеем дело с ссылочным типом (поскольку ссылочный символ расположен с именем типа).

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

1

Как говорится в тигре, если существует общий стиль для проекта или набора файлов, используйте этот стиль. Но если вы свободны в выборе, то я думаю, что предпочтительнее T const& v;. Размещение const, потому что это обобщает более сложные объявления с более чем одним const и местом размещения &, потому что в C++ основное внимание уделяется типам и потому что менее естественно пытаться объявить две или несколько переменных в одном объявлении. :-)

Cheers,

- Alf