|
09.01.2010, 13:15
|
#1
|
Оператор ЭВМ
Регистрация: 16.12.2009
Адрес: Днепропетровск
Сообщений: 27
Написано 7 полезных сообщений (для 17 пользователей)
|
Вопрос-задачка
Сначала озвучу задачку.
Задачка по с++ ООП:
При таком main'e (его изменять НЕЛЬЗЯ):
void main()
{
cout << "It's me!";
}
получить следующую картину в консоле:
Hello!
It's me!
Good luck!
Я знаю решение задачи, но не помню правильный его синтаксис. Поэтому подожду пару дней пока решите, если нет дам подсказку)
__________________
В разработке RPG! При первой демке напишу темку.
Программист - тварь ленивая, но хитрая!
Последний раз редактировалось Praedo, 09.01.2010 в 14:23.
|
(Offline)
|
|
09.01.2010, 14:41
|
#2
|
|
Ответ: Вопрос-задачка
это даже не смешно
|
|
|
09.01.2010, 14:48
|
#3
|
Бывалый
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений (для 245 пользователей)
|
Ответ: Вопрос-задачка
Осмелюсь как новичек, после грустного профессора jimonа, предположить, что здесь надо переопределить оператор - operator << , ну и так далее...
PS После небольшого размышления пришел к выводу, что мона вроде еще проще - переопределить как макро типа
#define cout cout << "Hello!\nIt's me!\nGood luck!" // ...
Ща еще может чё-нить придумаю..
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
Последний раз редактировалось Morganolla, 09.01.2010 в 16:24.
|
(Offline)
|
|
09.01.2010, 16:05
|
#4
|
Оператор ЭВМ
Регистрация: 16.12.2009
Адрес: Днепропетровск
Сообщений: 27
Написано 7 полезных сообщений (для 17 пользователей)
|
Ответ: Вопрос-задачка
Morganolla, я кажется писал что это "Задачка по с++ ООП", а ООП не подразумевает переопределение.)
__________________
В разработке RPG! При первой демке напишу темку.
Программист - тварь ленивая, но хитрая!
|
(Offline)
|
|
09.01.2010, 16:05
|
#5
|
|
Ответ: Вопрос-задачка
это еще не смешнее, правда вариантов решения тоже тыща
от :
void main()
{
cout << "Hello!" << endl << "It's me!" << endl << "Good luck!";
}
проходя :
void main()
{
cout << "Hello!\nIt's me!\nGood luck!";
}
до стреляния в ногу через центр нашей галактики (написания своих классов, загрузка данных из rar архива с тыщей паролей и тд)
|
|
|
09.01.2010, 16:07
|
#6
|
Оператор ЭВМ
Регистрация: 16.12.2009
Адрес: Днепропетровск
Сообщений: 27
Написано 7 полезных сообщений (для 17 пользователей)
|
Ответ: Вопрос-задачка
main менять нельзя.
Решений поубавилось?
__________________
В разработке RPG! При первой демке напишу темку.
Программист - тварь ленивая, но хитрая!
|
(Offline)
|
|
09.01.2010, 16:29
|
#7
|
Бывалый
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений (для 245 пользователей)
|
Ответ: Вопрос-задачка
Сообщение от Praedo
Morganolla, я кажется писал что это "Задачка по с++ ООП", а ООП не подразумевает переопределение.)
|
Я не точно выразился - перегрузить оператор... (это просто свойство русского языка...). А перегрузка - это самое настоящее ООП!!!
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
|
(Offline)
|
|
09.01.2010, 16:36
|
#8
|
|
Ответ: Вопрос-задачка
Praedo
а, недочитал
|
|
|
09.01.2010, 16:39
|
#9
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Вопрос-задачка
#include <stdio.h>
class coutstream { public: void operator<<(const char * value) { printf("Hello!\nIt's me!\nGood luck!"); } };
coutstream cout;
void main() { cout << "It's me!"; }
Могу предложить более извращенные варианты
З.Ы. main() сохранена символ в символ
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
09.01.2010, 16:44
|
#10
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Вопрос-задачка
а перед вызовом мейна написать хело, а по выходу из мейна написать гуд лак !!
|
(Offline)
|
|
09.01.2010, 16:46
|
#11
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Вопрос-задачка
Ну вариант, тока не так. Просто переопределить точку входа программы (кто в танке - ей пофигу откуда стартовать, просто по дефолту int main()). Но как бэ задача стояла с ООП, да.
|
(Offline)
|
|
09.01.2010, 16:47
|
#12
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Вопрос-задачка
та не, в конструкторе пишем хело а деструкторе гуд лак !! А обьект класа инициализируем перед мейном !!
|
(Offline)
|
|
09.01.2010, 16:49
|
#13
|
Бывалый
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений (для 245 пользователей)
|
Ответ: Вопрос-задачка
Knightmare, классно! понял вопросов нет...
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
|
(Offline)
|
|
09.01.2010, 16:54
|
#14
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Вопрос-задачка
Сообщение от IGR
та не, в конструкторе пишем хело а деструкторе гуд лак !! А обьект класа инициализируем перед мейном !!
|
Ну да, можно типа такого:
#include <iostream>
class coutstream { public: coutstream() { std::cout << "Hello!" << std::endl; } ~coutstream() { std::cout << std::endl << "Good luck!"; } };
coutstream blah;
void main() { std::cout << "It's me!"; }
Но. Это будет работать только без оптимизаций. Умный компилятор тупо выпилит объект из релизной версии. Хотя это будет зависеть от компилятора и уровня оптимизации. В общем вариант не самый лучший.
З.Ы. В принципе есть директивы для отключения оптимизаций для отдельно взятого куска кода. Но опять же, кто гарантирует что они не зависят от компилятора?
|
(Offline)
|
|
09.01.2010, 18:20
|
#15
|
Оператор ЭВМ
Регистрация: 16.12.2009
Адрес: Днепропетровск
Сообщений: 27
Написано 7 полезных сообщений (для 17 пользователей)
|
Ответ: Вопрос-задачка
Knightmare, Респект за решение.
А теперь вопрос мой:
как можно в объявлении класса (к примеру если оно в отдельном файле) сразу объявить глобальный объект?
мне казалось что как то так:
class coutstream { public: coutstream() { std::cout << "Hello!" << std::endl; } ~coutstream() { std::cout << std::endl << "Good luck!"; } },blah;
__________________
В разработке RPG! При первой демке напишу темку.
Программист - тварь ленивая, но хитрая!
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:56.
|