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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Считать строку и занести ее адресс другой переменой http://www.cyberforum.ru/cpp-beginners/thread680542.html
Пытаюсь сделать функцию наподобе scanf со сменным количеством параметров. С числами разобрался. как считать строку? Имеется функция такого формата: void Input ( char* format, ...) { char** params = &format; char* pFormat = format; while ( *pFormat ) { if ( *pFormat == '$' )
C++ Принцип работы с неблокирующими сокетами При переводе сокета в неблокирующий режим при любой операции он сразу возвращает управление. С получением данных проблем нет, - произошло событие, считываем. А вот с отправкой данных никак не пойму. Я получаю событие OUT, означающее что можно отправлять данные. Но тут возникает проблема, поскольку управление возвращается сразу же, я могу по сути начать в цикле отсылать неограниченное количество... 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; x=ui->lineedit_3->text().toDouble(); пишу в QT Creator.
C++ Создать классы "правильный треугольник", "правильный пятиугольник (с поворотом)", "текст", "текст в пятиугольнике"
создать классы с использованием наследования для фигур: Правильный треугольник, правильный пятиугольник (с поворотом), текст, текст в пятиугольнике
C++ Координаты точки http://www.cyberforum.ru/cpp-beginners/thread680515.html
Здравствуйте, друзья! Подскажите, пожалуйста, как "вытянуть" координаты точки при нажатии на левую кнопку мыши? #include <Windows.h> #include <iostream> using namespace std; HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE); //отвечает за вывод на экран HANDLE hIn=GetStdHandle(STD_INPUT_HANDLE); //отвечает за ввод на экране void main() {
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 - может иметь доступ непосредственно к полям (без операции доступа к полям класса ".").
Надеюсь понятно объяснил.
 
Текущее время: 16:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru