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

Использование указателей при создании обьекта - 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. Если просто закрывать приложение на крестик, то программа завершается корректно, а если по нажатию ctrl-c, то вываливается сообщение First-chance exception at 0x772dd3c1 in wrhg_killer.exe: 0x40010005: Control-C.... http://www.cyberforum.ru/cpp-beginners/thread234789.html
C++ Структура Student
Описать структуру с именем Student , содержащую следующие поля -фамилия -номер группы -успеваемость массив из 5 элементов написать программу ввод с клавиатеры данных в массив,состоящих из десяти структур типа Student; записи должны быть упорядочены по возрастанию среднего балла #include <iostream> using namespace std;
Массив C++
Помогите пожалуйста написать массив, который будет выводить все нечётные числа (1,3,5,7,9 и так далее).
C++ Не могу вытащить string из управляемого кода http://www.cyberforum.ru/cpp-beginners/thread234715.html
Здравствуйте! столкнулся с проблемой вытаскивания строки из c# в с++... есть код на c# namespace MyInterop { public interface IMyDotNetInterface2 { int Add(int Number1, int Number2);
C++ Загрузка dll: идентификатор не найден Глобальная задача: нужно сделать программу, работающую с т.н. LCard: ЦАП/АЦП, цепляющуюся на PCI. На сайте производителя есть дрова, в поставке которых идёт и dll: lcomp.dll с основными функциями работы. Я начал писать программу на Visual C++ в MVS 2010. Пробовал подключить библиотеку через "Добавить ссылку". Система говорит, что объект не является допустимой сборкой или компонентом COM.... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
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. В большинстве случаев, тебе будет достаточно такого признака - если методы работают с указателями на объект, создавай объекты именно как указатели (а не просто используй адрес обычных объектов), и наоборот
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru