Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/17: Рейтинг темы: голосов - 17, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 5
1

Если внутри функции создается объект с помощью gcnew, он создается один раз или при каждом вызове?

04.04.2012, 13:30. Просмотров 3489. Ответов 8
Метки нет (Все метки)

Обработчик по нажатию кнопки Visual C++ 2010

C++ (Qt)
1
2
3
4
5
    private: System::Void but1_Click(System::Object^  sender, System::EventArgs^  e) {
            Random ^randnum = gcnew Random();
            int num = randnum->Next(10);
            label1->Text = Convert::ToString(num);
            }
Если внутри функции создается объект с помощью gcnew, он создается один раз или при каждом вызове?
И как он уничтожается - автоматически?
Я новичек, заранее спасибо)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2012, 13:30
Ответы с готовыми решениями:

При нажатии на кнопку файл не создается на диске, а он создается только после сворачивания или закрытия окна...
Знакомлюсь с графическим интерфейсом Java Swing. Появилась такая проблема: при нажатии на кнопку...

Не создаётся объект когда один из параметров null
// создание объекта, 4-й параметр null - так ничего не происходит FRequest request = new...

Как из Range поместить данные в массив, если объект таблица excel создается в VB?
Пусть имеем объект таблицу Excel созданную в VB Set xl = CreateObject('excel.sheet') ...

Не создается новый объект при new DataTable()
Здравствуйте! Только что пошатнулись мои знания .Net'а. Сначала делал так:DataTable ddt =...

8
3072 / 2393 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
04.04.2012, 13:59 2
Цитата Сообщение от pfrost982 Посмотреть сообщение
Если внутри функции создается объект с помощью gcnew, он создается один раз или при каждом вызове?
При каждом вызове.
Цитата Сообщение от pfrost982 Посмотреть сообщение
И как он уничтожается - автоматически?
Да.
1
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 5
04.04.2012, 14:24  [ТС] 3
а если я создам его в myform.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// myform.cpp: главный файл проекта.
 
#include "stdafx.h"
#include "Form1.h" //!!!
 
using namespace myform;
 
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    Random ^randnum = gcnew Random(); //!!!!!!
    // Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 
 
    // Создание главного окна и его запуск
    Application::Run(gcnew Form1());
    return 0;
}
то как мне его объявить и передать в Form1.h где я его использую в обработчике нажатия кнопки?
Заранее спасибо)
0
3072 / 2393 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
05.04.2012, 12:07 4
Цитата Сообщение от pfrost982 Посмотреть сообщение
то как мне его объявить и передать в Form1.h где я его использую в обработчике нажатия кнопки?
Заранее спасибо)
Его можно объявить в самом Form1.h за пределами функций, но до первого использования.
1
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 5
05.04.2012, 14:26  [ТС] 5
Цитата Сообщение от kazak Посмотреть сообщение
Его можно объявить в самом Form1.h за пределами функций, но до первого использования.
пробовал, а он мне ответил:
"randnum: глобальная или статическая переменная не может быть управляемого типа "System::Random ^"

вопрос могу ли я создать этот объект и использовать в функции, чтобы он не создавался и уничтожался при каждом вызове?
0
3072 / 2393 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
05.04.2012, 15:10 6
Цитата Сообщение от pfrost982 Посмотреть сообщение
вопрос могу ли я создать этот объект и использовать в функции, чтобы он не создавался и уничтожался при каждом вызове?
Если он ни глобальным, ни статическим не может быть, то нет. Есть вариант сделать этот объект, допустим, открытым членом формы. Форма и ее элементы должны быть видны из обработчика.
1
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 5
05.04.2012, 15:16  [ТС] 7
Цитата Сообщение от kazak Посмотреть сообщение
Если он ни глобальным, ни статическим не может быть, то нет. Есть вариант сделать этот объект, допустим, открытым членом формы. Форма и ее элементы должны быть видны из обработчика.
Спасибо, брат, что возишься со мной, но я не знаю что такое открытый член формы, и как сделать объект открытым членом формы.

И еще мысль пришла а если его объявить и создать в main() а в Form.h объявить как extern, сейчас просто нет возможности попробовать.
0
3072 / 2393 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
06.04.2012, 00:17 8
Нужно объявить его в теле класса формы, инициализацию сделать в конструкторе класса. И лучше его объявить все таки скрытым.
Если внутри функции создается объект с помощью gcnew, он создается один раз или при каждом вызове?
1
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 5
06.04.2012, 08:51  [ТС] 9
дошло до меня что ты имел ввиду), у меня вылетело из головы что форма это класс: мы добавляем ему члена и как положено инициализируем в конструкторе - гармонично получается, спасибо за очередное просветление))), понемногу начинаю вспоминать, я программировал в университете 10 лет назад (бармэном работаю уже 8 лет), сейчас решил посмотреть насколько я от жизни отстал и новое хобби завести, Прата С. читаю сейчас, вхожу потихоньку в тему.

Добавлено через 10 минут
Проблема решена все отлично работает)))))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2012, 08:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

При присваивании объекта создаётся ссылка на объект, НО
Доброго. На официальном сайте сказано: То есть присваивается ссылка на объект ... Почему...

Почему при инициализации строки, сначала создаётся пустой объект?
Чтобы при создании присвоить строке какое-то значение, можно использовать два способа: string...

Написать программу, в которой при нажатии на кнопку динамически создается объект типа TListBox
Помогите пожалуйста очень нужна ваша помощь Написать программу, в которой при нажатии на кнопку...

Почему при изменении окна каждый раз создается новый обьект?
сам код: import java.awt.BorderLayout; import java.awt.Button; import...

в классе создаётся объект оператором new, как его удалить после использования в основной программе? delete в вызывающей функции не вариант!
Собсно //Это типа служебного класса. (Внимание! В оригинальном коде он вложен в класс xx,...

Создается только один потомок и не создаются дополнительные при следующем входе в цикл
#include &lt;stdio.h&gt; int main () { int i; for (i = 0; i &lt; 2; i ++) { fork(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.