Топ 10 Код С/С++
10. Оператор goto. Его ругают или настраивают против него почти все известные мне учебники. Такое неоднозначное отношение сложилось очень давно, в основном из-за случаев когда локализация применения оператора goto — более чем страница. Пройдя круг от учебника к реальности и обратно, убеждаешься: пусть живет goto. Но сам, по привычке, используешь его кастрированную версию — switch.
В принципе goto присутствует в серьезных проэктах, например в библиотеке MFC
9. Функция возвращающая указатель на саму себя.
В принципе чем — то напоминает шаблон интерфейса:
#include <iostream>
#include <conio.h>
class FuncPtrProxi;
typedef FuncPtrProxi (*FuncPtr)();
class FuncPtrProxi
{
public:
FuncPtrProxi(FuncPtr theP) : P(theP) {}
operator FuncPtr() {return P;}
private:
FuncPtr P;
};
FuncPtrProxi f() {
std::cout<<"return self-func pointer"<<std::endl; return f;
}
int main(int argc, char* argv[])
{
FuncPtr p=f();
p();
getch();
return 0;
}8. Шаблон интерфейса
В современном программировании шаблоны(паттерны) проектирования вызывают разные противоречивые реакции,
но этот код мне однозначно нравится.
#include <conio.h>
#include <iostream>
class Interface {
public:
virtual void f()=0;
virtual ~Interface(){};
};
class A : public Interface {
public:
void f() {std::cout<<"class A: f"<<std::endl;}
};
class B : public Interface {
public :
void f() {std::cout<<"class B: f"<<std::endl;}
};
int main(int argc, char* argv[])
{
Interface * theInterface;
A * a=new A;
B * b=new B;
theInterface=a;
theInterface->f();
theInterface=b;
theInterface->f();
getch();
delete a;
delete b;
return 0;
}...
Увесь код родовід веде з книг та всесвітнього павутиння...
2 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарівой как никрасива...бррр...
и к чему все это...