Re[11]: inline функции
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 29.07.03 08:40
Оценка:
Здравствуйте, SWW, Вы писали:

SWW>А что, есть люди, которые пишут реализацию функции вне определения класса, но в том же h-файле?

Да, есть. Более того, их большое количество.
Алексей Кирдин
Re[12]: inline функции
От: SWW Россия  
Дата: 29.07.03 08:40
Оценка:
SWW>>А что, есть люди, которые пишут реализацию функции вне определения класса, но в том же h-файле?

AVK>Я, например.


Э-ээ... Даже не знаю, что и сказать... А я, наивный, всегда считал что в заголовке не должно быть определений — только объявления... А не смущает ругань компилятора о невозможности создания precompiled header'а?
Re[13]: inline функции
От: Anton V. Kolotaev  
Дата: 29.07.03 08:44
Оценка:
Здравствуйте, SWW, Вы писали:

SWW> А не смущает ругань компилятора о невозможности создания precompiled header'а?


Это как?
Re[13]: inline функции
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 29.07.03 08:49
Оценка:
Здравствуйте, SWW, Вы писали:

SWW>А я, наивный, всегда считал что в заголовке не должно быть определений — только объявления...

Конструкция
class X { ... };

называется определением класса. А как же без них в заголовках обойтись?

Объявление — это
class X;
Алексей Кирдин
Re[14]: inline функции
От: SWW Россия  
Дата: 29.07.03 08:59
Оценка:
Kaa>Конструкция
Kaa>
Kaa>class X { ... };
Kaa>

Kaa>называется определением класса. А как же без них в заголовках обойтись?

Да, разумеется. И дальше, в этом же файле вы пишите:
X::func()
   {
   ...
   }

Так?
Re[15]: inline функции
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 29.07.03 09:42
Оценка:
Здравствуйте, SWW, Вы писали:

SWW>И дальше, в этом же файле вы пишите:

SWW>
inline X::func()
SWW>   {
SWW>   ...
SWW>   }
SWW>

SWW>Так?

Да.

Что касается лично меня:
Да, для всех методов кроме аксессоров, помещающихся в полстроки. В важных классах — вообще никакой реализации внутри тела класса быть не должно — чтоб броузинг интерфейса класса не затуманивали подробности егойной реализации.

Также, т.к. код в моем случае должен поддержживаться VC6, внутри тела класса всегда пишутся все шаблонные функции-члены, но это исключение, налагаемое компилятором.
Алексей Кирдин
Re[11]: inline функции
От: Андрей Тарасевич Беларусь  
Дата: 29.07.03 15:25
Оценка:
Здравствуйте, SWW, Вы писали:

SWW>>>1. Функция, реализованная в заголовке, считается имеющей модификатор 'inline'.


АТ>>Ничего подобного. Собственно компилятор не в состоянии распознать функцию, реализованную в заголовке, по той


SWW>7.1.2

SWW>...
SWW>3 A function defined within a class definition is an inline function.

А это здесь к чему? Перевожу цитату из стандарта: "Функция, определенная в определении класса, является inline-функцией". А теперь твои слова: "Функция, реализованная в заголовке, считается имеющей модификатор 'inline'". Разницы не замечаешь?
Best regards,
Андрей Тарасевич
Re[11]: inline функции
От: Андрей Тарасевич Беларусь  
Дата: 29.07.03 15:26
Оценка:
Здравствуйте, SWW, Вы писали:

SWW>>>1. Функция, реализованная в заголовке, считается имеющей модификатор 'inline'.


D>>возможно, ты путаешь с функциями, реализованными внутри определения класса.


SWW>А что, есть люди, которые пишут реализацию функции вне определения класса, но в том же h-файле?


А в чем проблема? Разумеется, есть.
Best regards,
Андрей Тарасевич
Re[13]: inline функции
От: Андрей Тарасевич Беларусь  
Дата: 29.07.03 15:28
Оценка:
Здравствуйте, SWW, Вы писали:

SWW>>>А что, есть люди, которые пишут реализацию функции вне определения класса, но в том же h-файле?


AVK>>Я, например.


SWW>Э-ээ... Даже не знаю, что и сказать... А я, наивный, всегда считал что в заголовке не должно быть определений — только объявления...


Это совершенно не верно. В заголовках всегда были, есть и будут присутствовать определения. Только надо помнить, какие определения можно помещать в заголовок, а какие нельзя.

SWW>А не смущает ругань компилятора о невозможности создания precompiled header'а?


Ы? Нет, разумеется, не смущает. Ибо нет никакой ругани.
Best regards,
Андрей Тарасевич
Re[15]: inline функции
От: Андрей Тарасевич Беларусь  
Дата: 29.07.03 15:31
Оценка: +1
Здравствуйте, SWW, Вы писали:

Kaa>>Конструкция

Kaa>>
Kaa>>class X { ... };
Kaa>>

Kaa>>называется определением класса. А как же без них в заголовках обойтись?

SWW>Да, разумеется. И дальше, в этом же файле вы пишите:

SWW>
SWW>X::func()
SWW>   {
SWW>   ...
SWW>   }
SWW>

SWW>Так?

А это откуда следует? Определние класса можно располагать в заголовке. Определения шаблонных функций можно располагать в заголовке. Определения статических функций (не методов) можно располагать в заголовке. Определения методов класса нельзя располагать в заголовке, за исключением случаев, когда это inline-методы. И т.д.

Как я уже сказал выше, надо соображать, какие определния можно помещать в заголовок, какие определния нужно помещать в заголовок и какие определния нельзя помещать в заголовок.
Best regards,
Андрей Тарасевич
Re[14]: inline функции
От: WolfHound  
Дата: 29.07.03 17:40
Оценка:
Здравствуйте, Андрей Тарасевич, Вы писали:

АТ>Ы? Нет, разумеется, не смущает. Ибо нет никакой ругани.

На 99% уверен у него билдер
... << RSDN@Home 1.1 alpha 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[15]: inline функции
От: SWW Россия  
Дата: 30.07.03 05:07
Оценка:
АТ>>Ы? Нет, разумеется, не смущает. Ибо нет никакой ругани.
WH>На 99% уверен у него билдер

Ты почти угадал. Эту ругань я видел на билдере лет 5 назад. С тех пор я перешел на VC, но никогда не пытался в h-файле помещать определения функций или переменных, считая это недопустимым (хотя бы потому, что этот файл нельзя будет включать в нексолько cpp-файлов). И когда в этом флейме писали о "функциях, реализованных в заголовке", я (а также, вероятно, skyline) считал, что речь идет о функциях, реализованных в определении класса.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.