Это вопрос по синтаксису с++ )
QLabel *label = new QLabel("Привет");
label-> show();
давайте разберем построчно
1) QLabel("Привет"); - создали экзепмляр класса QLabel
2) new QLabel("Привет") - оператор new выделяет память в куче, размещает там объект
QLabel("Привет")
и возвращает указатель на адрес в куче. По этому адресу расположен наш объект
3) = new QLabel("Привет"); - оператор = выполняет присваивание(или инициализацию в зависимости от контекста). Присваивание(инициализация) чего ? Присваивание(инициализация) правого операнда. Присваивание(инициализация) чему? Присваивание(инициализация) левому операнду.
4) QLabel *label - объявили указатель, который может указывать на объекты класса QLabel.
5) QLabel *label = new QLabel("Привет"); -читаем с Права на лево создали объект, разместили его в куче, адрес объекта передали указателю типа QLabel который расположен слева от знака =
Я так понимаю что [*label] это указатель на адрес объектов которых в дальнейшем будет много наверное
Это указатель на адресс
ОБЪЕКТА, этот указатель в один момент времени указывает только на ОДИН объект. так как отсутствует ключевое слово const то, да он может указывать на разные объекты. Но в конкретный момент времени он указывает только на один объект или вникуда
label-> show();
- обращаемся к объекту через УКАЗАТЕЛЬ на этот объект
SomeClass a; //тут создается объект на основе класса
SomeClass *p = &a; //это указатель на адрес объекта чтобы через него // вызывать методы класса
1) SomeClass a; - объект создается на СТЕКЕ, не рекомендуется создавать тяжеловесные объекты на стеке, а легковесные можно.
2)SomeClass *p = &a; - указатель указывает на объект на стеке все норм :)
Различие между
SomeClass a;
и
new QLabel("Привет");
в том что объект
а существует на стеке, а
QLabel("Привет"); в куче