Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
1 / 1 / 0
Регистрация: 01.10.2011
Сообщений: 40

вызвать конструктор

15.12.2011, 12:05. Показов 6449. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как вызвать конструктор?
std::cout << "7) Вызов конструктора;"<<std::endl;
case '7' :
что нужно ввести что бы при нажатии кнопки 7 он запусьтил конструктор

вот мой конструктор
fridge() : cash ( -1 ){}
fridge( std::string &c);
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2011, 12:05
Ответы с готовыми решениями:

как вызвать конструктор?
class t_figure { protected: int m_hor; // цифра по горизонтали char m_vert; // буква по вертикали int m_color; // цвет... ...

Вызвать конструктор с одним аргументом
Есть класс с конструктором принимающим один аргумент типа T. Этим аргументом должно быть значение T по умолчанию, то есть T(). Однако,...

Как вызвать конструктор по указателю?
TBase *Buffer; TBase *p; TBase *End; size_t NewSize; NewSize=Count*sizeof(TBase); if ((NewSize/sizeof(TBase))==Count) ...

15
Заблокирован
15.12.2011, 12:29
fridge();
0
Заблокирован
15.12.2011, 13:11
Цитата Сообщение от Damir1990 Посмотреть сообщение
как вызвать конструктор?
надеюсь, вы осознаете, что конструкторы вызываются автоматически при создании объекта?
И что "вызов конструктора" равносильно "создать объект" ?

Вы отдаёте себе отчет в том, что:

C++
1
2
3
std::cout<< std::string("привет!")<<std::endl; //здесь не просто будит 
                                                  //запущен конструктор объекта
                                     //а будит создан полноценный безымянный объект
Вы уверены, что при нажатии кнопки 7, должен быть создан объект?

/зы И будит совсем не плохо уточнить время жизни безымянных объектов, дабы не удивляться потом, что объект вроде был, а теперь его уже нет...
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
15.12.2011, 15:51
Цитата Сообщение от Bers Посмотреть сообщение
И что "вызов конструктора" равносильно "создать объект"
Не совсем же. Вроде вы сами же говорили мне)
0
Заблокирован
15.12.2011, 16:09
Цитата Сообщение от Chelioss Посмотреть сообщение
Не совсем же. Вроде вы сами же говорили мне)
Вот сюда глянь:

http://liveworkspace.org/code/... 22f7b033e6
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
15.12.2011, 16:14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
struct Test {
   Test() { std::cout << "constructor" << std::endl; }
   ~Test() { std::cout << "destructor" << std::endl; }
};
 
int main() {
   Test *test = NULL;
   int c = 0;
   
   switch (c) {
   case 7:
      test = new Test();
   }
   
   if (test) {
      delete test;
   }
}
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
15.12.2011, 17:56
Цитата Сообщение от Bers Посмотреть сообщение
Вот сюда глянь
Я о том, что поля объекта создаются и удаляются только 1 раз, а именно при первом создании объекта и в конце блока(локальный объект) или программы(глобальный). Хоть сто раз вызови конструктор и деструктор, поля объекта не будет создаваться и удаляться вновь.
Я в одной теме как раз спрашивал, почему можно вызывать конструктор и деструктор много раз.

Добавлено через 29 секунд
fasked
А что вы этим хотите сказать?
0
Заблокирован
15.12.2011, 19:48
Цитата Сообщение от Chelioss Посмотреть сообщение
Хоть сто раз вызови конструктор
Ну к, покажи, как ты можешь 100 раз вызвать конструктор без создания объекта.

Ещё раз взгляни на тест-иллюстрацию: http://liveworkspace.org/code/... e470fed59a

Я его дополнил для случая запуска конструктора изнутри самого объекта. Эксперимент наглядно показывает, что невозможно запустить конструктор, не создавая объекта.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.12.2011, 20:11
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Bers Посмотреть сообщение
Ну к, покажи, как ты можешь 100 раз вызвать конструктор без создания объекта.
Да не вопрос!
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
#include <iostream>
 
class Hundred {
public:
    Hundred(int n) {
        if ( n < 100 )
            throw ( n );
    }
};
 
int main(){
    for ( int i = 0; i < 101; ++i ){
        try {
            Hundred * h = new Hundred(i);
            std::cout << "Created." << std::endl;
            delete h;
        }
        catch ( int e ){
            std::cout << ( e + 1 ) << std::endl;
        }
    }
    
    return 0;
}

Не по теме:

Цитата Сообщение от Bers Посмотреть сообщение
здесь не просто будит
Это какая-то разновидность упёртости?

4
Заблокирован
15.12.2011, 20:16
C++
1
Hundred * h = new Hundred(i); //здесь типа объект не создаётся?
Добавлено через 3 минуты
Цитата Сообщение от easybudda Посмотреть сообщение
Это какая-то разновидность упёртости?
Это типа мне похрену, что лично ты об этом думаешь.
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
15.12.2011, 20:21
Вы меня не поняли. (Где я говорил, что можно вызвать конструктор без создания объекта?)
Еще раз объясняю( а не вы мне ли это объяснили?)):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class type{ int value; };
int main() 
{ 
     type obj; // тут выделится память в стэке для value( а вообще вроде бы память в стэке  выделиться сразу при запуске функции main. Могу ошибаться)
     obj.type::type(); // тут и дальше ничего не произойдет с value
     obj.type::type();
     obj.~type();
     obj.~type();
     obj.type::type();
     obj.type::type();
     obj.~type();
     obj.~type();
}     // тут уничтожиться value
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
struct Test {
   Test() { std::cout << "constructor" << std::endl; }
   ~Test() { std::cout << "destructor" << std::endl; }
   int value;
};
 
int main() {
   Test *test = NULL;
 
   test = new Test(); // выделиться память для  value тут
   test->Test::Test();
   test->~Test();
   test->Test::Test();
   test->~Test();
   delete test; // тут освободиться память, которую занимал  value
   system("pause");
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.12.2011, 20:21
Цитата Сообщение от Bers Посмотреть сообщение
здесь типа объект не создаётся?
Типа нет. Учи матчасть.

Цитата Сообщение от Bers Посмотреть сообщение
Это типа мне...
Приз выдан.
0
Заблокирован
16.12.2011, 19:04
Chelioss, видимо это незадокументированная возможность visual studio, причём довольно тупая и бесполезная
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
16.12.2011, 19:37
Цитата Сообщение от LosAngeles Посмотреть сообщение
Chelioss, видимо это незадокументированная возможность visual studio, причём довольно тупая и бесполезная
Не согласен.
C++
1
2
3
4
5
6
7
template< class Ty_ >
Department< Ty_ > &Department< Ty_ >::operator = ( const Department< Ty_ > &depart )
{
    this->Department::~Department();
    this->Department::Department( depart );
    return *this;
}
Может это плохо, а может нет, но выглядит очень просто и понятно.
Так же это лучше, чем копировать весь код с деструктора и конструктора копирования.
0
Заблокирован
16.12.2011, 20:04
Цитата Сообщение от Chelioss Посмотреть сообщение
this->Department:epartment( depart );
new(this) Department(depart);


эта конструкция никому непонятна кроме тебя и непереносима, да и раз её нет в С++ то вобще глупо её обсуждать.
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
16.12.2011, 20:19
Цитата Сообщение от LosAngeles Посмотреть сообщение
эта конструкция никому непонятна кроме
Чего тут не понятного? Вы не знаете, что такое конструктор копирования?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2011, 20:19
Помогаю со студенческими работами здесь

Как вызвать нужный конструктор
Пожалуйста, подскажите, как вызвать нужный конструктор в зависимости от того, какие поля заполняет пользователь и какие пропускает? ...

Вызвать конструктор в поле класса
Хай class ac { public: int a; ac(int c) { a = c; } ac() {};

Как вызвать конструктор для неизвестного объекта?
Добрый вечер. Помогите мне с задачей. Хочу написать шаблонный класс вектор. И в конструкторе по умолчанию нужно прописать конструкцию...

Вызвать конструктор произвольного класса в другом классе
Здравствуйте! Есть необходимость вызвать конструктор какого-либо класса в методе другого класса. Примерно так: class A{}; class B:...

Как правильно вызвать конструктор вектора в данном случае?
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;map&gt; #include &lt;vector&gt; #include &lt;string&gt; using namespace std; typedef...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru