Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как лучше вызывать методы другого класса?


Автор: manking 14.11.2011, 00:54
Если класс1 хочет использовать нестатичные методы класс2  класс3 класс4. 
То как лучше создавать объекты этих классов.


1) Создавать внутри класса
Код

class класс1 {

 класс2 объект2;
 класс3 объект3;
 класс4 объект4;

функция()
{
объект3.сменить_кодировку();
объект4.получить_время();
}

}


2) Делать классы  класс2  класс3  класс4 глобальными
Код


 класс2 объект2;
 класс3 объект3;
 класс4 объект4;

class класс1 {


функция()
{
объект3.сменить_кодировку();
объект4.получить_время();
}

}


3) Сделать namespace 
Код


namespace классы{
 класс2 объект2;
 класс3 объект3;
 класс4 объект4;
}

using namespace классы;


class класс1 {


функция()
{
объект3.сменить_кодировку();
объект4.получить_время();
}

}


Или еще как то?
Если класс1.функция() будет в большом цикле бегать то какой из вариантов наиболее быстрый?


Автор: volatile 14.11.2011, 01:36
Цитата(manking @  14.11.2011,  00:54 Найти цитируемый пост)
то какой из вариантов наиболее быстрый?

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

Автор: manking 14.11.2011, 01:47
Цитата(volatile @ 14.11.2011,  01:36)
Цитата(manking @  14.11.2011,  00:54 Найти цитируемый пост)
то какой из вариантов наиболее быстрый?

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

Класс 2 3 4 это абстрактные в которых просто лежат функции.
В одном работа с кодировками в другом с типами данных(перевод числа в строку) в третьем с файлами.
Тоже самое как стандартная библиотека std::

скажем мне в классе1 надо вывести на экран что то
применяю std::cout 
еще надо записать в файл.
класс2.записать_в_файл();











Автор: math64 14.11.2011, 07:42
консоль - одна на всех, поэтому это глобальная переменная
файл - у каждого свой, поэтому создаётся своя переменная.
часы - одни на всех, но если нужно показывать время в разных часовых поясах, могут понадобиться локальные экземпляры.
кодировка, используемая приложением по умолчанию - одна, но при необходимости прочитать/записать файл в другой кодировке, создаётся локальный экземпляр.
Всё зависит задачи.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)