- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
template<class face>
face getFace(face)
{
static face _face;
return _face;
};
template<class face>
face* getFace(face*)
{
static face _face;
return &_face;
};
template<char className>
struct SimpleFace
{
void printMe()
{
cout<<"ClassName is "<< className<<endl;
};
};
template<class face, char className>
struct TrollFace : public SimpleFace<className>
{
face operator->() const
{
return getFace(face());
};
};
typedef SimpleFace<'H'> H;
struct G: public TrollFace< H, 'G'>{};
struct F: public TrollFace< G, 'F'>{};
struct E: public TrollFace< F*, 'E'>{};
struct D: public TrollFace< E*, 'D'>{};
struct C: public TrollFace< D*, 'C'>{};
struct B: public TrollFace< C, 'B'>{};
struct A: public TrollFace< B, 'A'>{};
int _tmain(int argc, _TCHAR* argv[])
{
A a;
a.printMe();
a->printMe();
На днях, мой знакомый задал мне вопрос (видимо, решил меня потроллить):
"Что будет выведено на экран при запуске данной программы?"
Этот вопрос ему задали при собеседовании в одну серьёзную фирму. Естественно, пользоваться компилятором запрещено.
dosGovno 07.07.2011 23:46 # 0
SmackMyBitchUp 07.07.2011 23:49 # +9
guest 07.07.2011 23:49 # +7
Dr_Offset 08.07.2011 10:02 # +2
Irdis 07.07.2011 23:55 # 0
ClassName is B
Версия не компилировал.
guest 08.07.2011 00:03 # −1
Irdis 08.07.2011 00:25 # +2
guest 08.07.2011 11:28 # +6
3.14159265 08.07.2011 00:31 # +13
guest 08.07.2011 00:34 # −1
3.14159265 08.07.2011 00:37 # 0
http://trollface.biz/trollface-ascii-art Use Google, Luke
dosGovno 08.07.2011 00:36 # 0
Всю задницу уже отсидел. :(
guest 08.07.2011 00:54 # +3
guest 08.07.2011 00:41 # −1
Lure Of Chaos 08.07.2011 10:52 # 0
TarasB 08.07.2011 13:17 # 0
осиххиххиоооооо схи
SmackMyBitchUp 08.07.2011 13:30 # +3
guest 08.07.2011 14:33 # −9
TheHamstertamer 08.07.2011 16:54 # −6
macGovno 08.07.2011 01:19 # 0
Годный говнокод :толлфэйс:
SmackMyBitchUp 08.07.2011 12:26 # −4
Elvenfighter 21.07.2011 20:50 # 0
~ Матчасть 12.2.5
guest 30.07.2011 18:48 # 0
guest 30.07.2011 23:05 # −1
Elvenfighter 04.08.2011 20:56 # 0
члены класса(методы, атрибуты) - private
*facepalm*
guest 04.08.2011 21:06 # 0
хоть стандарт что ли почитай...
Elvenfighter 04.08.2011 21:24 # −1
Если класс объявлен как базовый для другого класса со спецификатором доступа public, тогда public члены базового класса доступны как public члены производного класса, protected члены базового класса доступны как protected члены производного класса.
Если класс объявлен как базовый для другого класса со спецификатором доступа protected, тогда public и protected члены базового класса доступны как protected члены производного класса.
Если класс объявлен как базовый для другого класса со спецификатором доступа private, тогда public и protected члены базового класса доступны как private члены производного класса.
\ANSI ISO IEC 14882 2003
если короче:
Мы поняли друг друга?)
macGovno 11.08.2011 15:24 # +1
> Если класс объявлен как базовый для другого класса со спецификатором доступа public...
Вам не кажется что эти два утверждения противоречат друг другу?
guest 08.07.2011 06:53 # −8
guest 08.07.2011 12:00 # −1
Esper 08.07.2011 13:03 # 0
macGovno 08.07.2011 13:21 # 0
guest 08.07.2011 14:15 # −1
guest 08.07.2011 14:25 # 0
Это известная истина, такая же тривиальная, как и то, что вижуал - говно.
guest 08.07.2011 14:26 # 0
http://www.comeaucomputing.com/tryitout
Your Comeau C/C++ test results are as follows:
Comeau C/C++ 4.3.10.1 (Oct 6 2008 11:28:09) for ONLINE_EVALUATION_BETA2
Copyright 1988-2008 Comeau Computing. All rights reserved.
MODE:strict errors C++ C++0x_extensions
"ComeauTest.c", line 9: error: extra ";" ignored,
In C: A function definition does not end with a semicolon
In C++: A non-member function definition, extern "C" block,
or namespace does not end with a semicolon
};
^
"ComeauTest.c", line 16: error: extra ";" ignored,
In C: A function definition does not end with a semicolon
In C++: A non-member function definition, extern "C" block,
or namespace does not end with a semicolon
};
^
2 errors detected in the compilation of "ComeauTest.c".
*/
guest 08.07.2011 14:27 # 0
$g++ -Wall -Wextra -pedantic test.cpp
test.cpp:140: error: extra ‘;’
test.cpp:146: error: extra ‘;
$g++ -v
Using built-in specs.
Target: i586-suse-linux
Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.1.2 --enable-ssp --disable-libssp --disable-libgcj --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit --enable-libstdcxx-allocator=new --program-suffix=-4.1 --enable-version-specific-runtime-libs --without-system-libunwind --with-cpu=generic --host=i586-suse-linux
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (SUSE Linux)
*/
/*
>bcc32 -w test.cpp
Embarcadero C++ 6.30 for Win32 Copyright (c) 1993-2010 Embarcadero Technologies, Inc.
test.cpp:
Error E2028 test.cpp 184: operator-> must return a pointer or a class
Error E2029 test.cpp 191: 'TrollFace<H,71>' must be a previously defined class or struct
Error E2028 test.cpp 184: operator-> must return a pointer or a class
Error E2029 test.cpp 192: 'TrollFace<G,70>' must be a previously defined class or struct
*** 4 errors in Compile ***
*/z
guest 08.07.2011 14:29 # 0
>Embarcadero C++ 6.30 for Win32 Copyright (c) 1993-2010 Embarcadero Technologies, Inc.
test.cpp:
>Error E2028 test.cpp 184: operator-> must return a pointer or a class
Бывший борланд как всегда отличился по не соответствию стандарту! Хахах. :D
guest 08.07.2011 14:31 # −1
guest 08.07.2011 12:36 # 0
guest 08.07.2011 12:55 # +1
Esper 08.07.2011 13:07 # +4
ctm 11.07.2011 12:10 # 0
честно сказать, все по отдельности я понимаю, но в такой мешанине - чуть что-то не заметишь и... в общем копаться не стал.
Код не должен быть таким, особенно когда его мегабайты.
TarasB 08.07.2011 13:07 # 0
classname is H
не угадал?
macGovno 08.07.2011 13:18 # 0
TarasB 08.07.2011 13:23 # 0
B
?
Irdis 08.07.2011 13:26 # 0
TarasB 08.07.2011 13:29 # 0
Dr_Offset 08.07.2011 13:52 # +2
D
absolut 08.07.2011 14:20 # +3
D
-ский код!
absolut 08.07.2011 14:21 # +1
guest 08.07.2011 14:26 # −1
guest 22.07.2011 13:56 # −1
TarasB 08.07.2011 17:33 # 0
macGovno 08.07.2011 17:42 # −1
http://en.wikibooks.org/wiki/C++_Programming/Operators/Operator_Overloading#Member_access_opera tors
Втрой абзац.
TarasB 08.07.2011 17:49 # 0
Короче, там берётся D, потому что в его объявлении есть указатель?
macGovno 08.07.2011 17:54 # 0
pushkoff 30.07.2011 19:23 # −1
guest 30.07.2011 23:06 # +1
guest 10.07.2011 22:27 # +3
Полезно для создания proxy-объектов и умничающих умный указателей (мы то знаем, что все они достаточно глупые :D).
То есть ситуация такова, что proxy-объект может вернуть прокси-объект, который уже наконец-то вернёт нужный нам объект, ну или хотя бы прокси-объект, который... Весьма полезное свойство языка С++.
absolut 08.07.2011 17:49 # 0
guest 08.07.2011 20:34 # +4
Тарас уже не торт.
guest 08.07.2011 14:18 # 0
guest 08.07.2011 14:40 # −1
rat4 08.07.2011 19:57 # 0
guest 08.07.2011 21:20 # −1
guest 08.07.2011 22:57 # −1
carsten 10.07.2011 14:12 # +5
bugmenot 10.07.2011 17:08 # +2
eth0 10.07.2011 18:23 # +1
carsten 10.07.2011 19:20 # +1
Хорошо, правильно написанный код приятно читать и на с++, и даже на перле -- без особых кулхацкер-познаний всех параграфов стандарта.
Алсо, для таких запущенных случаев заведено понятие "комментарий". Почему не проверяют навык чтения чужих комментариев?
Lure Of Chaos 10.07.2011 21:59 # 0
TarasB 10.07.2011 23:38 # −1
Если только стандарта, то это ещё ничего, а если ещё и недокументированные особенности конкретного крестокомпилятора...
guest 06.08.2011 01:38 # −1
guest 06.08.2011 01:58 # −1
Есть много удобных языков программирования таких как Delphi, Modula, Oberon, Ada. Но почему-то некоторые программисты выбирают C++. Я никогда всерьёз не писал на нём, но где-то слышал мнение, что C++ это язык для понтующихся школьников, что программы, написанные на нём, глючат и текут, итд.
TarasB
Блииин, я забыл отписаться от уведомлений на почту!!!!
TarasB
Ещё ОБЛОМ сей и сиплюсплюса.
Вот тут говорят, что якобы к машине близко. Ага, к машине образца 70го года.
А в современной машине многое не так. Важное изменение - память дико тормозная нынче. Понимаете? Все эти сраные сишные указатели - это большая проблема. Да, компиляторы это вроде как разруливают, но тогда не надо ляля про "близок к машине".
Вот например, как я могу передать число в функцию так, чтобы оно поменялось после работы функции? В сях для этого придуман указатель. А указатель - это пипец скорости, переменную не положить в регистр, это постоянное разыменование, это обращение к памяти. В крестах придумали ссылку - так это тупо сахар для указателя. А в нормальных языках есть модификатор in out, который вообще может не иметь никакого отношения к указателям, переменная может прийти в функцию в регистре, и уйти из неё в нём же.
А, ну да, можно же функцию в виде макроса записать, как я мог забыть. Какое удобное, мать его, решение, вместо того, чтобы придумать нормальный синтаксис вызова функции.
guest 06.08.2011 02:04 # −1
ололо
А чего ж так? А как же "близко к железу"?
Даже ребёнку достаточно одного взгляда на картинку, чтобы увидеть, что тот же CL - и тот намного, в разы, ближе к железу, чем C:
guest 06.08.2011 02:31 # −1
Петушок, заткни клюв.
Но миллионы леммингов всё равно выбирают С++.
Извини, но твой интеллектуальный уровень недостаточен для этой дискуссии.
Э, народ, давайте поговорим (не холиварим) не про мелкие недостатки Дельфи, а про уродства С++.
ДЫ ТЫ ЧЁ, РИАЛЬНА?!
TarasB
Спасибо, что просветил меня!
Теперь я буду знать, что С++ позволяет оптимизировать вплоть до ассемблера!
Ты забыл дописать "только" и "другие языки так не могут, потому что они ламерские, а С++ так может, потому что он ][a(kerский"
VIP_Artemka
Есть в Delphi одно преимущество: это процедура beep() =) или я просто не знаю аналога в C++
guest 06.08.2011 02:39 # −1
Учись, как элементы из массива надо удалять, я для детей специально статью написал:
guest 06.08.2011 02:53 # −1
Ай не надо, маленький врунишка.
> почитай Александреску, посмотри как использует шаблоны он
Это тот чел, который, после того, как изучил до конца недокументированные возможности С++, понял, что С++ - говно? Кстати, шаблоны так, как он, в промышленности никто не использует.
Ну и понятное дело, что для того, чтобы считать факториал на этапе компиляции, шаблоны не нужны, нужен просто компилятор, который догадается заменить fact(5) на 120.
eth0 11.07.2011 10:19 # +1
Настоящее значение фразы
* Нужен идиот, который будет разгребать это дерьмо.
SmackMyBitchUp 10.07.2011 18:33 # 0
>ищут того, кто разгребёт
я бы сказал - лопатой раскидает :D
TarasB 10.07.2011 23:38 # +8
guest 29.07.2011 13:36 # −1
guest 31.07.2011 11:17 # −1
CPPGovno 12.08.2011 01:32 # −1
» Бьёрн Страуструп
guest8 09.04.2019 11:09 # −999