вопрос по конструктору в с ++ - PullRequest
1 голос
/ 06 мая 2011

Я новичок в C ++, я еще не видел такого конструктора, что он делает?

class A {
    int x;
public:
    A(int xx):x(xx) {}
};

int main() {
    A a(10);
    A b(5);
    return 0;
}

Действителен ли приведенный выше код?
Что делает этот конструктор? A (int xx): x (xx) означает что? Литой?

Ответы [ 7 ]

4 голосов
/ 06 мая 2011

допустим ли приведенный выше код?

Да.

что делает этот конструктор?A (int xx): x (xx) означает что?

Это называется списком инициализатора, который копирует xx в член класса x.

2 голосов
/ 06 мая 2011

Вещество после : и перед телом (пустые скобки) представляет собой список инициализаторов .Она инициализирует переменную-член x с xx.

. См. Этот раздел в C ++ FAQ: http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6.

1 голос
/ 06 мая 2011

Строка :x(xx) называется инициализатором. Как видите, он действителен только для конструктора. Эффект состоит в инициализации x значением xx. Таким образом, ваш код создает два объекта A - один имеет х 10, а другой 5.

Это более эффективно, чем позволить инициализировать его и затем изменить его значение в теле конструктора, написав x=xx;

0 голосов
/ 06 мая 2011

Код действителен: переменной-члену "x" присваивается значение в "списке инициализаторов базы / члена".

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

Это необязательно в других случаях, например, в этом, где значение могло быть явно установлено в теле конструктора (но это возможнобыстрее, поскольку он инициализируется при выделении памяти).

0 голосов
/ 06 мая 2011

A(int xx) : x(xx) инициализирует элемент данных x значением xx.

0 голосов
/ 06 мая 2011

Это конструктор с инициализатором.

x(xx) инициализирует x значением xx

0 голосов
/ 06 мая 2011

Это называется списком инициализации.При вызове конструктора закрытая переменная x будет инициализирована с помощью xx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...