Форум программистов, компьютерный форум CyberForum.ru

Класс, inline - C++

Восстановить пароль Регистрация
 
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
28.06.2012, 16:48     Класс, inline #1
Все ли функции класса по умолчанию содержат спецификатор inline?
Нужно ли его писать перед функциями класса?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2012, 16:48     Класс, inline
Посмотрите здесь:

inline C++
Inline функции C++
C++ Inline функции.
C++ inline функции vs инструкции inline функций
inline функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
28.06.2012, 16:56     Класс, inline #2
Цитата Сообщение от Ksan Посмотреть сообщение
Нужно ли его писать перед функциями класса?
Зачем?
Это бесполезное ключевое слово, оно практически ни на что не влияет.
Компилятор просматривает все функции, и инлайнит их, если это выгодно, вне зависимости от того, есть ли у этих функций спецификатор inline.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
28.06.2012, 17:14     Класс, inline #3
Цитата Сообщение от diagon Посмотреть сообщение
Это бесполезное ключевое слово, оно практически ни на что не влияет.
Это если рассматривать это ключевое слово только как указание встраиваемости. Но у него есть гораздо более важное свойство: оно разрешает множественное определение функции. Поэтому если код функции находится вне класса, но в заголовочном файле, то она просто обязана быть объявлена как inline. Иначе при включении заголовка в двух модулях возникнет ошибка компоновщика.
С шаблонными функциями (код которых должен располагаться именно в заголовках) вообще непонятка. Вроде бы им inline не обязателен, но я постоянно сталкивался с проблемами из-за этого. Поэтому если пишу шаблонную функцию, то тоже в обязательном порядке объявляю её как inline.

Добавлено через 4 минуты
Цитата Сообщение от Ksan Посмотреть сообщение
Все ли функции класса по умолчанию содержат спецификатор inline?
Только те, которые определены внутри класса.
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
28.06.2012, 17:42  [ТС]     Класс, inline #4
diagon, разве все компиляторы делают это? я компилю в Dev-cpp

Добавлено через 45 секунд
grizlik78,

всегда писал:
и без инлайна нормально работало

C++
1
2
3
4
5
6
7
8
9
10
11
class A
{
  public:
    void zzz():
};
 
 
void A::zzz()
{
 
}
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
28.06.2012, 19:17     Класс, inline #5
Цитата Сообщение от Ksan Посмотреть сообщение
всегда писал:
и без инлайна нормально работало
Конечно без инлайна работает. Но если это записано в заголовочном файле и этот заголовочный файл подключить сразу в двух или более модулях одной программы, то работать перестанет.
Yandex
Объявления
28.06.2012, 19:17     Класс, inline
Ответ Создать тему
Опции темы

Текущее время: 09:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru