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

Поля, переменные; Методы, функции; В чем отличие? - C++

Восстановить пароль Регистрация
 
Аммурка
 Аватар для Аммурка
4 / 4 / 0
Регистрация: 10.02.2014
Сообщений: 30
22.02.2014, 22:45     Поля, переменные; Методы, функции; В чем отличие? #1
Насколько я понимаю, "поля" - это и есть "переменные", а "методы" - это "функции";
Недавно преподаватель задал вопрос: "Какое у них различие?"
Помогите разобраться, в чем же?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 22:45     Поля, переменные; Методы, функции; В чем отличие?
Посмотрите здесь:

В чем отличие printf от cout? C++
C++ В чем отличие While от Do... While?
Подскажите начинающему программисту, в чем отличие структур от классов в C++ C++
C++ C++, в чем отличие операций добавления в программе
C++ cin.get в чем отличие ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
22.02.2014, 22:48     Поля, переменные; Методы, функции; В чем отличие? #2
Термины поля и методы обычно применяют к классам. То есть поля, это такие переменные, которые в классе (структуре). А методы, это такие функции, которые в классе.
Аммурка
 Аватар для Аммурка
4 / 4 / 0
Регистрация: 10.02.2014
Сообщений: 30
22.02.2014, 22:50  [ТС]     Поля, переменные; Методы, функции; В чем отличие? #3
Я ответил что-то типу этого, но сказала что этот ответ не совсем верен. Можно дать более точный ответ.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
22.02.2014, 22:52     Поля, переменные; Методы, функции; В чем отличие? #4
в таких случаях нужен диалог с тем, кто задал вопрос для уточнения.
ответить можно совершенно правильно, но это типа не то, что ожидал спрашивающий.
например:
- какой сегодня день?
- воскресение.
- нет. это не совсем то, что я хотел услышать. сегодня 22 февраля 2014 года. садись два.
Аммурка
 Аватар для Аммурка
4 / 4 / 0
Регистрация: 10.02.2014
Сообщений: 30
22.02.2014, 22:55  [ТС]     Поля, переменные; Методы, функции; В чем отличие? #5
Возможно, но я думаю есть же какое-то явное отличие, кроме того что уже написано... Да и на крайний случай можно сказать сегодня воскресение 22 февраля 2014 года.
P.S.: Сегодня суббота.
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,913
22.02.2014, 22:55     Поля, переменные; Методы, функции; В чем отличие? #6
Цитата Сообщение от Аммурка Посмотреть сообщение
Я ответил что-то типу этого, но сказала что этот ответ не совсем верен. Можно дать более точный ответ.
Скажи,что поля-переменные класса,а методы-его функции.
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
22.02.2014, 22:57     Поля, переменные; Методы, функции; В чем отличие? #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Аммурка Посмотреть сообщение
Можно дать более точный ответ.
Преподаватель играет в игру "угадай что я имею в виду"?
Ответ, который я дал - более чем точный с точки зрения терминологии.
Может быть препод спрашивал не терминологическое различие, а функциональное?
Например про то, что метод, это такая функция, у которой есть неявный параметр-указатель на экземпляр класса, которому метод принадлежит, в теле метода доступный через ключевое слово this?
Или например, что некоторые методы никогда не могут быть функциями (например operator[]), а некоторые функции не могут быть методами (например operator== от двух аргументов)?

Добавлено через 1 минуту
Цитата Сообщение от Аммурка Посмотреть сообщение
P.S.: Сегодня суббота.
Зависит от часового пояса
Аммурка
 Аватар для Аммурка
4 / 4 / 0
Регистрация: 10.02.2014
Сообщений: 30
22.02.2014, 23:00  [ТС]     Поля, переменные; Методы, функции; В чем отличие? #8
Или например, что некоторые методы никогда не могут быть функциями (например operator[]), а некоторые функции не могут быть методами (например operator== от двух аргументов)?
Вот что-то похожое и нужно сказать, только не так обширно. А именно почему
некоторые методы никогда не могут быть функциями, а некоторые функции не могут быть методами
. Сможешь объяснить? И поля тоже затронь.
Зависит от часового пояса
тогда уже 23
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
22.02.2014, 23:06     Поля, переменные; Методы, функции; В чем отличие? #9
Цитата Сообщение от DrOffset Посмотреть сообщение
Например про то, что метод, это такая функция, у которой есть неявный параметр-указатель на экземпляр класса, которому метод принадлежит, в теле метода доступный через ключевое слово this?
Или например, что некоторые методы никогда не могут быть функциями (например operator[]), а некоторые функции не могут быть методами (например operator== от двух аргументов)?

Не по теме:

Воот, а сразу бочку на препода катите, не обижайся Аммурка, не в той огород камень, я тебя не знаю, ты меня. Но студенты услышав вопрос, так потом его исковеркивают смысл, что диву даешься..

Цитата Сообщение от Аммурка Посмотреть сообщение
Я ответил что-то типу этого
знаешь "Мама мыла раму"это что типа "Рама мыла маму" но смысол-то. А препод скорее всего просил просто уточнить нюансы, или просил тебя поправиться

Аммурка
 Аватар для Аммурка
4 / 4 / 0
Регистрация: 10.02.2014
Сообщений: 30
22.02.2014, 23:12  [ТС]     Поля, переменные; Методы, функции; В чем отличие? #10
просил просто уточнить нюансы, или просил тебя поправиться
скорее хотел услышать
некоторые методы никогда не могут быть функциями, а некоторые функции не могут быть методами.
НО уверен что следующим вопросом будет:
Почему?
Не по теме:
Я ответил что-то типу этого
имел в виду что ответил тем же смыслом.
Елена Едыгарова
 Аватар для Елена Едыгарова
34 / 20 / 9
Регистрация: 24.01.2014
Сообщений: 80
22.02.2014, 23:29     Поля, переменные; Методы, функции; В чем отличие? #11
Хм, интересно)... В сети выловила, что методы, в отличие от функций, имеют "упрощенный" доступ к данным (полям класса)... Кроме того, возможно, есть разница по размещению в памяти у функций и методов....

Что же конкретно она имела в виду?
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
22.02.2014, 23:40     Поля, переменные; Методы, функции; В чем отличие? #12
Сообщение было отмечено автором темы, экспертом или модератором как ответ
mustimur, Не очень понял смысл твоего цитирования
Аммурка, тут в двух словах не расскажешь.
Цитата Сообщение от Аммурка Посмотреть сообщение
Сможешь объяснить? И поля тоже затронь.
Таких примеров много и каждый надо отдельно разбирать.
А есть еще статические функции и переменные класса. И считать ли их методами или не методами зависит от смысловой нагрузки, которую разработчик им определил.
Конкретно с операцией индексации - ее нельзя применять в отрыве от объекта (как и некоторые другие, например взятие адреса), поэтому стандарт языка запрещает определять ее отдельно.
Оператор сравнения бывает в двух формах: с одним аргументом и с двумя. Оператор с одним аргументом - это всегда метод, предполагается, что второй аргумент - это тот самые неявный this. Оператор с двумя аргументами - функция - разрешать помещать ее в класс (получается будет три аргумента) - не логично, поэтому это тоже запрещено.

Добавлено через 9 минут
Цитата Сообщение от Елена Едыгарова Посмотреть сообщение
В сети выловила, что методы, в отличие от функций, имеют "упрощенный" доступ к данным (полям класса)... Кроме того, возможно, есть разница по размещению в памяти у функций и методов....
Что же конкретно она имела в виду?
Упрощенный - это как раз и есть this, который можно не писать - для доступа к данным.
C++
1
2
3
4
5
6
7
8
9
10
void Class::method()
{
    this->data = 2;
    data = 2;
}
// и функция
void func(Class * obj)
{
    obj->data = 2;
}
где data - поле типа int класса Class. Замечу, что многие считают, что в подобных случаях, как в примере, функция func тоже может называться методом.
Надеюсь теперь понятно почему нельзя ответить однозначно на вопрос без четкой формулировки. Если тот простейший ответ в первом посте преподавателя не устроил, то здесь можно до бесконечности гадать что он имел в виду в зависимости от его личных предпочтений и его личного опыта в программировании.

Насчет размещения в памяти - еще более сложный вопрос, который требует рассмотрения в рамках конкретной системы, компилятора и настроек компилятора.
Аммурка
 Аватар для Аммурка
4 / 4 / 0
Регистрация: 10.02.2014
Сообщений: 30
22.02.2014, 23:46  [ТС]     Поля, переменные; Методы, функции; В чем отличие? #13
спасибо, думаю этого достаточно, правда про поля я так и не услышал ничего - потому что там все банально просто? В классе - поле, нет - переменная?
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
22.02.2014, 23:58     Поля, переменные; Методы, функции; В чем отличие? #14
Цитата Сообщение от Аммурка Посмотреть сообщение
В классе - поле, нет - переменная?
В общем да.
Есть одно различие во взятии адреса поля. Адрес поля можно записать так:
C++
1
int * pData = &obj.data;
А можно так:
C++
1
int Class::*pData = &Class::data;
В первом случае это будет как бы "абсолютный адрес" (в кавычках потому, что тут есть нюансы связанные уже с распределением и организацией памяти в системе и конкретно в приложении, которые выходят за рамки темы)
А во втором случае будет адрес относительный (проще говоря - смещение), относительно адреса объекта класса. Чтобы получить через него значение нужен второй компонент - сам объект (или его адрес):
C++
1
std::cout << (obj.*pData) << std::endl;
Адреса методов могут быть взяты только вторым способом.
Но вряд ли вы такое проходили
Аммурка
 Аватар для Аммурка
4 / 4 / 0
Регистрация: 10.02.2014
Сообщений: 30
23.02.2014, 01:22  [ТС]     Поля, переменные; Методы, функции; В чем отличие? #15
ссылки(&) и указатели(*) что-ли?
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
23.02.2014, 01:27     Поля, переменные; Методы, функции; В чем отличие? #16
Цитата Сообщение от Аммурка Посмотреть сообщение
ссылки(&) и указатели(*) что-ли?
Не понял вопроса.
Но если про прошлые посты, то нет.
Про ссылки - вообще отдельная тема
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2014, 01:34     Поля, переменные; Методы, функции; В чем отличие?
Еще ссылки по теме:

C++ В чем отличие одной формы записи от второй?
Указатель на строковую константу. В чем отличие двух приведенных примеров C++
В чем отличие алгоритмов set_union и merge? C++

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

Или воспользуйтесь поиском по форуму:
Аммурка
 Аватар для Аммурка
4 / 4 / 0
Регистрация: 10.02.2014
Сообщений: 30
23.02.2014, 01:34  [ТС]     Поля, переменные; Методы, функции; В чем отличие? #17
ладно и на том спасибо, щас еще летаратурку почитаю мб да пойду))
Yandex
Объявления
23.02.2014, 01:34     Поля, переменные; Методы, функции; В чем отличие?
Ответ Создать тему
Опции темы

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