Каково значение начальных символов подчеркивания в конструкторе C++?

TFS может импортировать из SVN, однако SVN не может импортировать из TFS. Таким образом, если Вы, don’t находят серьезное основание иначе, используете SVN, поскольку легче передумать позже.

Одна из лучших вещей о SVN - то, что каждая система управления исходным кодом, о которой я знаю, может импортировать из него, таким образом выбор SVN нас опция очень с низким риском.

6
задан Bhargav Rao 25 February 2019 в 08:50
поделиться

8 ответов

It's just a convenient naming convention, it means nothing to the language. Just be sure you don't follow it with an upper-case letter: What does double underscore ( __const) mean in C?

8
ответ дан 8 December 2019 в 03:39
поделиться

Ничего особенного. Он просто назвал его так, чтобы различать переменные-члены и имена параметров.

Подчеркивание - допустимый символ в идентификаторах C ++.

9
ответ дан 8 December 2019 в 03:39
поделиться

Скорее всего, автор кода пытался избежать потенциального конфликта между именами элементов данных и именами параметров конструктора в списке инициализаторов. Вполне вероятно, что автор не знал о том, что правила поиска C ++ гарантируют, что конфликт все равно не возникнет. Т.е. следующий код также даст ожидаемые результаты

class floatCoords    {
    public:
        floatCoords(float x, float y, float width, float height)
                : x(x), y(y), width(width), height(height)
        {
        }
        float x, y, width, height;
        ...

, хотя он может сбить с толку неподготовленного читателя.

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

8
ответ дан 8 December 2019 в 03:39
поделиться

Это просто соглашение об именах переменных, которое принимают разные люди / организации. На первый взгляд это может показаться ненужным, но на самом деле очень полезно при чтении и написании кода, особенно когда у вас есть параметры и переменные-члены с одинаковыми именами. Например, обычно могут быть следующие три случая:

class A {
  void foo(int age_) { //parameter
    int age = 18; //local scope
    if (age_ > age) cout << legal << endl;
  }
  int _age; //member
};

В приведенном выше примере:

  • _variable - означает, что это переменная-член класса
  • variable_ - означает, что это параметр переменной функции
  • - означает, что это просто обычная переменная, локальная для области действия функции
2
ответ дан 8 December 2019 в 03:39
поделиться

Это просто имена для передаваемых параметров. Они совпадают с переменными-членами и используются для инициализаторов.

Нет особого значения - это просто соглашение, которое некоторые люди могут использовать.

1
ответ дан 8 December 2019 в 03:39
поделиться

Они не имеют синтаксического значения. Однако, если у вас есть несколько полей (например, x , y , ширина и высота ), обычно используется назовите параметры конструктора, которые инициализируют их, с помощью имени поля и символа подчеркивания в начале.

0
ответ дан 8 December 2019 в 03:39
поделиться

The purpose of those underscores is to distinguish the parameter variable float _x and the member variable float x. Syntactically, there's no special meaning added due to the underscores. I personally prefer to prefix all parameters with a_ and prefix all member variables with m_ when I do have to code C++.

So when I do get into a situation where I have to mix and match local, member, and parameter variables, I know which ones I am dealing with.

int y = a_x * 2;
m_x = y + 3;
0
ответ дан 8 December 2019 в 03:39
поделиться

, потому что если вы назовете den float x, float y и т. Д., Вы не сможете получить доступ к фактическим полям класса, потому что они имеют то же имя.

это не имеет ничего общего с язык, это просто соглашение реального программиста (я думаю, чтобы сделать код более очевидным)

0
ответ дан 8 December 2019 в 03:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: