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

конструктор и деструктор для cout - C++

Восстановить пароль Регистрация
 
 
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.03.2013, 17:17     конструктор и деструктор для cout #1
Здарова! нужно решить задачу:
есть код:
C++
1
2
3
4
int main()
{
   cout <<"Hellow world"<<endl;
}
нужно без модифицирования функции main заставить чтобы она выводила

razraz
Hellow world
dvadva

вообщем незнаю чо и делать это видемо нужно както создать конструктор и деструктор для объекта cout хелп?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.03.2013, 17:25     конструктор и деструктор для cout #2
как делать не надо
адаптируйте этот пример под себя, в ходе адаптации придет понимание почему так делать не надо
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
02.03.2013, 17:34     конструктор и деструктор для cout #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
using std::cout;
using std::endl;
 
struct translit {
   translit() {
      cout << "razraz" << endl;
   }
   ~translit() {
      cout << "dvadva" << endl;
   }
} instance;
OhMyGodSoLong
02.03.2013, 18:00
  #4

Не по теме:

Предлагаю advanced challenge. Написать такую реализацию, чтобы

C++
1
2
3
4
int main()
{
    cout << "Hello" << " " << "World!";
}
выводило
Код
>>>
Hello World!
<<<
Grangmaster level — чтоб оно было reentrant и thread-safe.

ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.03.2013, 18:00  [ТС]     конструктор и деструктор для cout #5
мне нужно так как gray_fox показал без перегрузки, токо я никак не пойму как оно работает?
да мы определили новую структуру, да мы создали в ней конструктор и деструктор, да мы ее вроде сразу и инициализировали instanse, но как она выводит перед и вконце?

ладно я понял просто просто вначале срабатывает код инициализации структуры, и ее конструктор, а затем кода строчка cout вывел свое мы срабатывает деструктор
gray_fox
02.03.2013, 18:03
  #6

Не по теме:

Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Предлагаю advanced challenge.
Эмм... и в чём подвох?)

ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.03.2013, 18:07  [ТС]     конструктор и деструктор для cout #7
В принципе старичок помог ты мне решить задачку которая решается за 5 минут, а я над ней бился несколько часов
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
02.03.2013, 18:14     конструктор и деструктор для cout #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using std::endl;
using std::ostream;
 
struct Cout
{
    Cout() { std::cout << "razraz" << endl; }
    ~Cout() { std::cout << "dvadva" << endl; }
    ostream &operator<<( char *s ) { std::cout << s; return std::cout; }
} cout;
 
int main()
{
    cout <<"Hellow world"<<endl;
}
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
02.03.2013, 18:14     конструктор и деструктор для cout #9
Цитата Сообщение от gray_fox Посмотреть сообщение

Не по теме:


Эмм... и в чём подвох?)

Не по теме:

Да я просто имел в виду не ваш вариант с хитрой инициализацией-деинициализацей статической переменной. А такой, чтоб если написать

C++
1
2
3
4
5
int main()
{
    cout << "Hello" << " " << "World!";
    cout << 42;
}
то вывело
Код
>>>
Hello World!
<<<
>>>
42
<<<
а не
Код
>>>
Hello World!42
<<<

gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
02.03.2013, 18:22     конструктор и деструктор для cout #10

Не по теме:

~OhMyGodSoLong~, понял.



Добавлено через 2 минуты
Цитата Сообщение от ninja2 Посмотреть сообщение
как оно работает
Глобальные объекты создаются до выполнения main, уничтожаются после.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.03.2013, 18:31  [ТС]     конструктор и деструктор для cout #11
Цитата Сообщение от gray_fox Посмотреть сообщение

Не по теме:

~OhMyGodSoLong~, понял.



Добавлено через 2 минуты

Глобальные объекты создаются до выполнения main, уничтожаются после.
да я понял, но они не глобальные а в пространстве std

Чуточку свой блог пропиарю создал пост по этой задаче http://www.kselax.ru/2013/03/prostenkaya-zadachka/

Ну как бложек для первого пойдет?
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
02.03.2013, 18:36     конструктор и деструктор для cout #12
Цитата Сообщение от ninja2 Посмотреть сообщение
да я понял, но они не глобальные а в пространстве std
:/ Причём тут пространство имён std? instance - глобальный объект, создаётся до вызова ф-ии main (при создании выполняется тело соответствующего конструктора), уничтожается - после выполнения main (выполняется тело деструктора). Вот и всё)
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.03.2013, 18:39  [ТС]     конструктор и деструктор для cout #13
Цитата Сообщение от gray_fox Посмотреть сообщение
:/ Причём тут пространство имён std? instance - глобальный объект, создаётся до вызова ф-ии main (при создании выполняется тело соответствующего конструктора), уничтожается - после выполнения main (выполняется тело деструктора). Вот и всё)
а ну да можно и глобально, то я тупанул.
gray_fox
02.03.2013, 19:52
  #14

Не по теме:

Вообщем, ничего лучше я не придумал)

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
 
 
struct cout_tag {} cout;
 
 
struct cout_impl_t {
   cout_impl_t()  {
      std::cout << ">>>" << std::endl;
   }
   cout_impl_t(cout_impl_t const&) {
      ++counter;
   }
   ~cout_impl_t() {
      if (counter == 0) {
         std::cout << "<<<" << std::endl;
      } else {
         --counter;
      }
   }
   
private:
   static std::size_t counter;
};
 
std::size_t cout_impl_t::counter(0);
 
 
typedef std::ios_base & (*ios_base_manipulator_t)(std::ios_base &);
typedef std::ostream &  (*ostream_manipulator_t )(std::ostream & );
 
 
template<typename Type>
cout_impl_t operator <<(cout_impl_t impl, Type const& type) {
   std::cout << type;
   return impl;
}
 
cout_impl_t operator <<(cout_impl_t impl, ostream_manipulator_t manipulator) {
   std::cout << manipulator;
   return impl;
}
 
cout_impl_t operator <<(cout_impl_t impl, ios_base_manipulator_t manipulator) {
   std::cout << manipulator;
   return impl;
}
 
template<typename C, typename T>
cout_impl_t operator <<(cout_impl_t impl, std::basic_ios<C, T> & (*manipulator)(std::basic_ios<C, T> &)) {
   std::cout << manipulator;
   return impl;
}
 
 
template<typename Type>
cout_impl_t operator <<(cout_tag, Type const& type) {
   return (cout_impl_t() << type);
}
 
cout_impl_t operator <<(cout_tag, ostream_manipulator_t manipulator) {
   return (cout_impl_t() << manipulator);
}
 
cout_impl_t operator <<(cout_tag, ios_base_manipulator_t manipulator) {
   return (cout_impl_t() << manipulator);
}
 
template<typename C, typename T>
cout_impl_t operator <<(cout_tag, std::basic_ios<C, T> & (*manipulator)(std::basic_ios<C, T> &)) {
   return (cout_impl_t() << manipulator);
}
 
 
int main()
{
    cout << "Hello" << " " << "World!" << std::endl;
    cout << 42 << std::endl;
}
http://ideone.com/6ioc1u

Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
02.03.2013, 20:21     конструктор и деструктор для cout #15
Сообщение было отмечено автором темы, экспертом или модератором как ответ
~OhMyGodSoLong~, а у нас будет свой cout, с блекджеком и тройными угловыми скобками!
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.03.2013, 20:34  [ТС]     конструктор и деструктор для cout #16
gray_fox, Откуда ты так С++ хорошо знаешь, а то я все учю учю уже год и все нулевой.
Хо экспертом в С++ стать или хотябы выше среднего, а все никак не получается.
Что нужно задачек больше решать?

Или лучше технолугию учить например создание прикладных или системных программ,
или технологию создания игр??? С++ мб потом со временем приложиться хз.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
03.03.2013, 02:56     конструктор и деструктор для cout #17

Не по теме:

ninja2, общение помогает, этот форум например) Обычно книжек советуют почитать. А так я хз, что конкретно можно посоветовать. Изучай то, что считаешь нужным и\или интересным тебе - я поступаю так. Но я не профессионал и не эксперт (тем более в образовании).



Добавлено через 10 минут
Nick Alte, таки тут на оптимизацию надежда, как я понял? http://liveworkspace.org/code/4lZzzr
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
03.03.2013, 10:41     конструктор и деструктор для cout #18
gray_fox, Это всего лишь забавное решение поставленной задачи в базовом варианте методом "хотите странный глобальный cout? Сделайте его сами!". Я вовсе не рекомендую его в качестве хорошей практики. А вот причин, чтобы оптимизация меняла поведение этой программы, не вижу. Время создания и уничтожения времянки hredir вполне себе определённое, там ни UB, ни implementation-defined, по моим представлениям, быть нигде не должно.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
12.05.2013, 16:15     конструктор и деструктор для cout #19
Nick Alte, ссылка не рабочая
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2013, 17:13     конструктор и деструктор для cout
Еще ссылки по теме:

Для класса задать конструктор и деструктор C++
Конструктор и деструктор C++
C++ Нужно ли прописывать конструктор и деструктор для чисто виртуального абстрактного класса

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
12.05.2013, 17:13     конструктор и деструктор для cout #20
И все-таки, кому-нибудь удалось получить желаемый результат?
Оба предложенные в теме метода не позволяют его увидеть,
т.к. после вывода "двадва" окно обязано закрыться
(а следовательно, результата не увидим).
Yandex
Объявления
12.05.2013, 17:13     конструктор и деструктор для cout
Ответ Создать тему
Опции темы

Текущее время: 06:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru