|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.07.2015, 14:53 | #1 |
Пользователь
Регистрация: 16.07.2015
Сообщений: 31
|
Вызов функции класса без объекта
Здравствуйте!
Допустим есть класс EDU и внутри него есть функция Work(....) Она объявлена как static и определена с ключевым словом inline Сам класс и функция Work объявлены и описаны в HDR.H Допустим в SRC.CPP я вызываю функцию EDU::Work (...) без создания экземпляра класса. И возникают такие вопросы: 1. Можно ли было вызывать эту функцию если она не была бы static? 2. Что дает слово inline в описании функции в HDR.H ? 3. Получается, что вызвав эту функцию Work автоматически вызывается конструктор класса, где я могу инициализировать его переменные, которые использую в функции Work хотя экземпляр класса EDU при этом не создается, так получается? |
16.07.2015, 15:03 | #2 | |||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
На то он и статик. Цитата:
Цитата:
I'm learning to live...
|
|||
16.07.2015, 15:55 | #3 | |||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
Цитата:
Цитата:
Цитата:
|
|||
16.07.2015, 16:03 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
16.07.2015, 17:27 | #5 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Статик функция отличается тем, что в нее не поступает указатель на объект класса, т.е. this.
Код:
Код:
Код:
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Последний раз редактировалось Krasiosoft; 16.07.2015 в 17:31. |
16.07.2015, 17:33 | #6 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
robix
1. Можно ли было вызывать эту функцию если она не была бы static? если очень хочется, то вызвать можно. ((EDU*)0)->Work(); на этом программа всё Ж) 2. Что дает слово inline в описании функции в HDR.H ? рекомендация подставить тело функции в точку вызова компилятор может последовать рекомендации, а может и в пешее эротическое отправить - они сейчас фибко умные, и без программиста знают как лучше поступить. 3. Получается, что вызвав эту функцию Work автоматически вызывается конструктор класса, где я могу инициализировать его переменные, которые использую в функции Work хотя экземпляр класса EDU при этом не создается, так получается? ничего ты с переменными сделать не можешь. функции не передается скрытый параметр this и она не получает доступ к данным класса (но может обращаться к статическим даным)
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
16.07.2015, 17:36 | #7 | |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
Цитата:
2. inline - устарела... компилятор найдя эту функцию старается вставить вместо ссылки на функцию, само тело функции, ну это в общих чертах, не факт, что будет быстро, но на функции длиной в менее 4 строчек или обёрток, почему бы и нет. Все заголовочные данные объявляются в заголовочном файле, вопрос не уместен. 3.Класс сам создаёт свои переменные при помощи описанного Вами конструктора и уничтожается посредством деструктора, морочить голову этим не зачем. P.S. статик функции неприкольны, использование переменных класса невозможно, не конечно можно, но такие темки крутят, только при создании своих "Окон"
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Последний раз редактировалось Perchik71; 16.07.2015 в 17:47. |
|
16.07.2015, 17:39 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
16.07.2015, 17:57 | #9 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Для того они и созданы, чтоб принадлежать какому-то классу, но не зависеть от переменных объекта класса.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
17.07.2015, 17:02 | #10 |
Пользователь
Регистрация: 16.07.2015
Сообщений: 31
|
Спасибо за ответы.
Последний раз редактировалось robix; 18.07.2015 в 00:09. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вызов функции из класса | mc13 | Общие вопросы по Java, Java SE, Kotlin | 11 | 08.02.2015 20:52 |
Вызов функции из одного класса кнопкой из другого класса | lexflax | Qt и кроссплатформенное программирование С/С++ | 1 | 12.12.2014 21:48 |
Вызов глобальной функции из объекта класса | Darthriddikc | Общие вопросы C/C++ | 3 | 22.12.2013 21:03 |
C# Вызов метода без создания объекта. Предотвращение изменения фокуса. | Colder M | Помощь студентам | 3 | 03.05.2011 23:42 |
Вызов методов объекта из функции? | jojahti | Общие вопросы C/C++ | 3 | 03.08.2009 16:57 |