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

Использование указателей при создании обьекта - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удаление символа из строки http://www.cyberforum.ru/cpp-beginners/thread234798.html
Как удалить символ (скобку) в заданной символьной строке?
C++ First-chance exception at 0x772dd3c1 in wrhg_killer.exe: 0x40010005: Control-C У меня такая ситуация. Запускаю приложение из своей программы. Запущенное приложение работает до тех пор, пока пользователь из него не выйдет. В приложении прописан выход ctrl-c. Если просто... http://www.cyberforum.ru/cpp-beginners/thread234789.html
C++ Множество возвращаемое функцией как результат
Помогите пожалуйста с возвратом множества, как результата работы функции. int Cross(){ set<int> b; for(is=s.begin();is!=s.end();is++) for(iq=q.begin();iq!=q.end();iq++){ if(*is==*iq){...
Точка пересечения 2 прямых в пространствае C++
Помогите кто может!!! Нужен код проги н С++, которая определяет координаты точки пересечения 2 отрезков. Заданы координаты начала и конца отрезков( ). Если отрезки не пересикаются то она должна об...
C++ Структура Student http://www.cyberforum.ru/cpp-beginners/thread234736.html
Описать структуру с именем Student , содержащую следующие поля -фамилия -номер группы -успеваемость массив из 5 элементов написать программу ввод с клавиатеры данных в массив,состоящих из...
C++ Массив Помогите пожалуйста написать массив, который будет выводить все нечётные числа (1,3,5,7,9 и так далее). подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
27.01.2011, 19:16
Цитата Сообщение от @KOT@ Посмотреть сообщение
А в своих программах имеет смысл использовать указатели в том случае, которые ты описал, либо есть ЕЩЕ СЛУЧАИ, когда будет удобнее и функциональнее использовать указатель?
Если ты, к примеру, используешь стандартные виджеты в стандартных ситуациях, то лучше хранить указатели на них (учитывая то, что при автоматическом удалении "подчиненных" виджетов используется оператор delete для вызова их деструкторов). Пусть тебе надо сделать свой супер-пупер-мега-виджет, типичная задача при этом - установка (настройка) объекта класса размещения QLayout, для того, чтобы все элементы находились на твоем виджете в строгом порядке:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class megaWidget: public QWidget
{
    Q_OBJECT
 
public:
 
    megaWidget(QWidget* parent = 0);
 
protected:
 
    /* Храним именно указатели на виджеты */
    QLabel* plblCaption;
    QPushButton* pcmdDoSomething;
    /* ... */
};
 
megaWidget::megaWidget(QWidget* parent)
    : QWidget(parent)
{
    /* Установка класса размещения */
    QVBoxLayout* pvbl = new QVBoxLayout;
    plblCaption = new QLabel("The Matrix has you");
    pcmdDoSomething = new QPushButton("Follow the White Rabbit");
    pvbl->addWidget(plblCaption);
    pvbl->addWidget(pcmdDoSomething);
    setLayout(pvbl);
    /* ... */
}
Тут используются именно указатели. При уничтожении твоего объекта автоматически вызовется деструктор базового класса, который вызовет деструктор подчиненного объекта QVBoxLayout* pvbl (т.к. он был установлен как главный layout виджета), который, в свою очередь, вызовет деструкторы для метки plblCaption и pcmdDoSomething (т.к. они, в свою очередь, были установлены на этот layout). Таким образом, вся динамически выделенная память будет корректно освобождена автоматически, утечек не будет.
Другие примеры может посмотреть в книжках и примерах/документации Qt. В большинстве случаев, тебе будет достаточно такого признака - если методы работают с указателями на объект, создавай объекты именно как указатели (а не просто используй адрес обычных объектов), и наоборот
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru