2014-01-20 3 views
-1

Я только что начал изучать C++ за последние несколько месяцев, и я так много не подвергался. Я пробовал искать этот синтаксис, но безуспешно. Это упражнение на programr.com, которое касается классов и перегрузки операторов. Вот код:Может кто-нибудь объяснить мне этот код C++?

class temp 
{ 
    int value; 

public: 
    temp(int v=0) : value(v) { } 

Я понимаю, что это объявить класс под названием «Темп», с «значением» частной переменной члена. Я предполагаю, что код под «public» объявляет конструктор по умолчанию. Я привык видеть конструкторами по умолчанию, объявленные в синтаксисе функции:

temp (int v=0){ 
     value = v; 
    some expressions; 
} 

Часть я запутался о том, после двоеточия:

: value(v) {} 

Что такое функция толстой кишки там, точно? Какова связь между конструктором по умолчанию и значением (v) {} "? Является ли это просто другим синтаксисом конструктора по умолчанию для конструктора по умолчанию? Я привел пример выше? Спасибо за помощь в этом полном n00b!

+0

также см. Ответы на http://stackoverflow.com/questions/4589237/c-initialization-lists –

+0

Он называется списком инициализации - он позволяет вызывать конструкторы объектов-членов перед выполнением команд в скобках. В примитивах C++ также есть конструкторы - они просто инициируют переменную с любым значением, которое вы передаете внутри. –

+0

Спасибо, что предоставили терминологию «список инициализации». Теперь, когда я это знаю, я вижу это в главе 10 раздела 1. Я все еще на седьмой главе 9! Спасибо огромное! – Huaidan

ответ

1

Это еще один способ инициализации переменной-члена класса.

: value(v) 

это будет просто работать, как

value = v; 

нет никакой разницы между этими двумя декларации.

, если предположим, что вы должны инициализировать более одной переменной, то вы можете попробовать, как это ..

:value1(v1), value2(v2), value3(v3) 

это очень общий шаблон инициализации.

Обратите внимание, что у вас есть, чтобы использовать этот шаблон, если элемент данных, который вы инициализируете, отмечен const.

Смежные вопросы