Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

2 вопроса

5.7K
30 августа 2011 года
Lindemann66
193 / / 21.07.2011
Всем привет!

У меня 2 глупых вопроса

1. Допустим, такой код
 
Код:
int value() const {
    return m_nValue;
}

В чём смысл const?

2. В чём разница между
 
Код:
Pointer* p
и
 
Код:
Pointer *p
?
То есть, где ставить * ?

Буду благодарен за любые ответы
278
30 августа 2011 года
Alexander92
1.1K / / 04.08.2008
1. const означает, что эта функция не может изменять члены класса. Любая попытка изменить какой-либо член класса из функции, объявленной как const, вызовет ошибку компиляции. Почитайте параллельно про mutable, там есть еще некоторые оговорки.

2. Никакой разницы.
2.1K
30 августа 2011 года
Norgat
452 / / 12.08.2009
1. const используют в методах классов. Таком метод не может изменять состояние объекта класса, т.е. менять значения полей класса.

2. Я бы рекомендовал писать:

 
Код:
Pointer *p;


т.к. в случае

 
Код:
int* a, b;


a - будет указателем на int, а b переменной типа int. Что в коде не очень видно, когда используется int* вместо int *a.
5.7K
30 августа 2011 года
Lindemann66
193 / / 21.07.2011
В-общем, методом примера было узнано (простите за корявый язык)) что на самом деле разницы между int *a, b и int* a, b НЕТ НИКАКОЙ
Имеется в виду в Qt
Может быть, в Visual C++ разница и есть
2.1K
30 августа 2011 года
Norgat
452 / / 12.08.2009
Цитата: Lindemann66
В-общем, методом примера было узнано (простите за корявый язык)) что на самом деле разницы между int *a, b и int* a, b НЕТ НИКАКОЙ
Имеется в виду в Qt
Может быть, в Visual C++ разница и есть



Естественно разницы нету. Я писал о другом,а именно о том, что int*, на мой взгляд, выдаёт менее читаемый код(особенно после использования C#\Java).

Т.к. модификатор * применяется только к первой переменной в списке, а не ко всем(что после C# выглядит довольно странно), ведь можно же написать int *a, **b и это будет корректно. Имхо, используя код вида int *a подчёркивается, что модификатор * применяется к переменной, а не к типу(если можно так выразится).

278
30 августа 2011 года
Alexander92
1.1K / / 04.08.2008
Цитата: Lindemann66

Имеется в виду в Qt
Может быть, в Visual C++ разница и есть


Причем здесь Qt и Visual C++? Qt - это всего лишь фреймворк, стандарт языка-то один что для Qt, что для VC++.

2.1K
30 августа 2011 года
Norgat
452 / / 12.08.2009
Цитата: Alexander92
Причем здесь Qt и Visual C++? Qt - это всего лишь фреймворк, стандарт языка-то один что для Qt, что для VC++.



Ну хоть Qt и фреймворк, но он расширяет синтаксис C++ и для этого сначала прогоняет исходники через moc. Хотя да, этот случай подпадает под стандарт полностью.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог