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

Зачем нужен inline - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 184, средняя оценка - 4.79
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
06.10.2009, 23:36     Зачем нужен inline #1
Скажите пожалуйста, зачем нужна команда inline? Изучаю классы, и там говорится мимолётом, что эта функция повысит эффективность, но так и не понял зачем она нужна. Желательно пример с комментарием. Зараннее благодраю за скорый ответ.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2009, 23:36     Зачем нужен inline
Посмотрите здесь:

Зачем нужен конструктор? C++
Зачем нужен static C++
C++ Зачем нужен стек и очередь
C++ inline функции vs инструкции inline функций
C++ зачем нужен параметр
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Adler
 Аватар для Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
12.02.2011, 17:01     Зачем нужен inline #21
Цитата Сообщение от Evg Посмотреть сообщение
Если по простому, то функцию с модификатором inline можно помещать в файл *.h. Даже если функция не будет проинлайнена, то множественное её определение в разных модулях компиляции не вызовет слома при линковке.
На самом деле есть ещё одно назначение, явным образом не упомянутое в данной теме.

Например, если на момент объявления функции некоторые типы данных используемые в ней ещё не определены, то как раз модификатор inline позволяет такой функции отложить её определение до момента первого встраивания. Ещё точно такой же эффект можно получить сделав функцию шаблонной. Такие финты ушами особо ценятся при использовании кодогенерации.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
13.02.2011, 00:06     Зачем нужен inline #22
Цитата Сообщение от Adler Посмотреть сообщение
На самом деле есть ещё одно назначение, явным образом не упомянутое в данной теме.

Например, если на момент объявления функции некоторые типы данных используемые в ней ещё не определены, то как раз модификатор inline позволяет такой функции отложить её определение до момента первого встраивания.
Никогда такого не слышал. Пример конкретный покажи. Такое, например, не компилится:

C++
1
2
3
4
5
6
7
8
9
10
inline void
func (struct s s)
{
  s.x = 0;
}
 
struct s
{
    int x;
};
maxon887
 Аватар для maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
19.09.2012, 13:17     Зачем нужен inline #23
немогу понять
не компилиться
C++
1
2
3
4
5
// mystring.h
ostream& operator<<(ostream& out,MyString &s)
{
    return out<<s.c_str();
}
компилиться
C++
1
2
3
4
5
// mystring.h
inline ostream& operator<<(ostream& out,MyString &s)
{
    return out<<s.c_str();
}
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
19.09.2012, 13:56     Зачем нужен inline #24
maxon887, если тело функции находится в хедер-файле, то функция должна быть явно или неявно помечена как inline.
Цитата Сообщение от maxon887 Посмотреть сообщение
не компилиться
потому что нарушается ODR(One Definition Rule)
maxon887
 Аватар для maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
19.09.2012, 15:20     Зачем нужен inline #25
во первых я думал что я перегружаю функцию, так как такие параметры (ostream& out,MyString &s)только у меня
Во вторых. правило не нарушаеться ? функция всё ровно же опять определяеться?
ну и наконец. Вопрос у меня напрасился почти сразу как только начал читать топик, зачем нужно неосколько раз определять функцию???????
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
19.09.2012, 15:34     Зачем нужен inline #26
maxon887, создайте новую тему и четко изложите проблему, две строки кода и " я думал что я..." это не четко
maxon887
 Аватар для maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
19.09.2012, 16:07     Зачем нужен inline #27
понимаю что ни чётко, извините
чуть попоже создам когда пойму точно в чём я хочу разобраться))

Добавлено через 8 минут
ответ на вопрос "Зачем нужен inline?", повысить производительность - я считаю неправильным.Так как без модификатора у меня не скопилировалось.
Ответ - для того что, бы определять функции несколько раз.Поднимает встречный вопрос: зачем определять функции несколько раз?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2012, 16:22     Зачем нужен inline
Еще ссылки по теме:

Объяснить зачем нужен i C++
C++ Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline?
C++ Зачем нужен malloc?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
19.09.2012, 16:22     Зачем нужен inline #28
Цитата Сообщение от maxon887 Посмотреть сообщение
зачем определять функции несколько раз?
Чтобы помещать их в *.h файлах. Вкратце как работает #include - см. тут: Для чего нужен define?
Yandex
Объявления
19.09.2012, 16:22     Зачем нужен inline
Ответ Создать тему

Метки
inline
Опции темы

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