Предпочтительный способ объявить указатель / ссылочные переменные? - PullRequest
0 голосов
/ 26 июля 2011

Примечание: я использую компилятор g ++ (который, как я слышал, довольно хорош и должен быть довольно близок к стандарту).

Не пытаться начать грамматическую войну, а просто случайный вопрос ... Какой идеальный способ объявить указатель?

int* pI = 4;
int *pI = 4;

(или мой любимый, я знаю, что это не красиво, но мне нравится):

int*pI = 4;

Одинаковый вопрос обозначает ссылки:

int& rI = 4;
int &rI = 4;

или

int&rI = 4;

Может быть, нет правильного ответа. Точно так же я должен заботиться, объявлено ли постоянное целое число как:

const int I = 4;

или

int const I = 4;

Я в порядке, не заботясь ...

Мне нравится, как функция const объявляется при наличии const после последней круглой скобки.

И я считаю, что постоянная функция имеет отличительную сигнатуру функции, чем аналогичная неконстантная функция (т.е. const-nesss является частью сигнатуры функции, в отличие от большинства источников, которые говорят, что она зависит только от типа аргументов и возвращаемого типа ).

Это правильно? Должен ли я заботиться?

Ответы [ 4 ]

6 голосов
/ 26 июля 2011

Я предпочитаю

int* a;
int& b;

по следующей причине: тип int *, а не int.Для меня - тип принадлежит друг другу и должен стоять отдельно от названия.Я знаю, что это создает некоторые проблемы с

int* a, b;

, но именно поэтому я не объявляю переменные в одной строке.

Кроме этого - как сказал VJo: придерживайтесь стандарта кодирования.Если все вокруг делают это одним способом, не делайте этого другим.

4 голосов
/ 26 июля 2011

И я полагаю, что константная функция имеет отличительную сигнатуру функции, чем аналогичная неконстантная функция (т.е. const-nesss является частью сигнатуры функции, в отличие от большинства источников, которые говорят, что она зависит только от типа аргументов итип возврата).

Функция константы имеет ключевое слово const, которое добавляется в конце ее.

int doSomething() const;

Это означает, что функция не изменитсостояние (члены) класса.

Упоминание const в аргументе означает, что функция не будет изменять состояние этой переменной (param в следующем примере), передаваемой в функцию.

int doSomething(const int param);

Упоминание const перед тем, как возвращаемый тип применяется к типу, возвращаемому функцией.

const int doSomething();

Подразумевает, что функция возвращает целочисленное значение const.

Так что даваше понимание верно.И нет другого способа объявить функцию const, кроме как поставить const после последнего парантеза.Кроме того, обратите внимание, что функцию-член const можно вызывать только для объекта const, в то время как не-const функцию-член можно вызывать как const, так и не const объектами этого класса.

Что касается способа объявленияКаждая организация имеет свои собственные правила кодирования, и вам следует придерживаться этого. Да, нет явных преимуществ использования упомянутых вами конструкторов в любом случае в отношении оптимизации или обработки компилятора.Просто следуйте тому, что вам нравится или то, что ваша организация хочет, чтобы вы следовали.

4 голосов
/ 26 июля 2011

Стандарты кодирования могут сказать вам, как объявлять или определять ваши переменные.Кроме того, используйте то, что подходит вам лучше.

2 голосов
/ 26 июля 2011

Бьярне Страуструп использует:

int* a;

итак, для меня этого достаточно.

...