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

Приведите ситуации когда использование классов лучше структур и функций - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Считать строку и занести ее адресс другой переменой http://www.cyberforum.ru/cpp-beginners/thread680542.html
Пытаюсь сделать функцию наподобе scanf со сменным количеством параметров. С числами разобрался. как считать строку? Имеется функция такого формата: void Input ( char* format, ...) { char**...
C++ Принцип работы с неблокирующими сокетами При переводе сокета в неблокирующий режим при любой операции он сразу возвращает управление. С получением данных проблем нет, - произошло событие, считываем. А вот с отправкой данных никак не пойму.... http://www.cyberforum.ru/cpp-beginners/thread680540.html
invalid types '<unresolved overloaded function type>[int]' for array subscript C++
Значит создал массив, пытаюсь записать туда значение а он мне ошибку выдает. invalid types '<unresolved overloaded function type>' for array subscript asga=0;...
C++ Создать классы "правильный треугольник", "правильный пятиугольник (с поворотом)", "текст", "текст в пятиугольнике"
создать классы с использованием наследования для фигур: Правильный треугольник, правильный пятиугольник (с поворотом), текст, текст в пятиугольнике
C++ Координаты точки http://www.cyberforum.ru/cpp-beginners/thread680515.html
Здравствуйте, друзья! Подскажите, пожалуйста, как "вытянуть" координаты точки при нажатии на левую кнопку мыши? #include <Windows.h> #include <iostream> using namespace std; HANDLE...
C++ Программирование циклов с неизвестным заранее числом повторений Лабораторная работа №3 Программирование циклов с неизвестным заранее числом повторений Цель работы: освоение средств языка C++ для описания итерационных циклов и закрепление навыков использования... подробнее

Показать сообщение отдельно
isvpro
72 / 7 / 1
Регистрация: 07.10.2009
Сообщений: 51
25.10.2012, 23:28
Методы занимают место, но только один раз. Подумайте сами - ведь код у них совершенно идентичный для всех объектов класса. Зачем программе хранить лишние данные, если они абсолютно одинаковы? Поля же наоборот у каждого объекта свои - и тут действительно нужно для них выделить место, но для функций только один раз и тогда каждый объект будет вызывать функцию (одну и туже). При этом эта функция может ссылаться напрямую на поля того объекта, который вызвал эту функцию.
Приведу пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class myclass
{
private:
    int a;
    int b;
public:
    myclass(int x, int y): a(x), b(y) {}
    void add(myclass mc1, myclass mc2)
    {
        a = mc1.a + mc2.a;
        b = mc1.b + mc2.b;
    }
};
Если Вы теперь создадите в функции main например три объекта класса вот так
myclass m1(5,6);
myclass m2(4,9);
myclass m3;

и вызовете функцию m3.add(m1,m2);
тогда Вы передадите фактически объекту m3 два объекта в виде параметров, но функция для них все равно одна и та же. Поэтому m3 - может иметь доступ непосредственно к полям (без операции доступа к полям класса ".").
Надеюсь понятно объяснил.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru