diff --git a/OOP/test.cpp b/OOP/test.cpp index d3a898f..7227b7f 100644 --- a/OOP/test.cpp +++ b/OOP/test.cpp @@ -3,68 +3,18 @@ using std::cout; using std::cin; using std::endl; -class A { -protected: - int a; - -public: - A(int _a) : a(_a) { - } - void display() { - std::cout << a << std::endl; - } +template +struct Factorial { + static const unsigned long long value = x * Factorial::value; }; -class B : virtual public A { -protected: - int b; - -public: - B(int _a, int _b) : A(_a+1), b(_b) { - } - void display() { - A::display(); - std::cout << b << std::endl; - } +template <> +struct Factorial<0> { + static const unsigned long long value = 1; }; -class C : virtual public A { -protected: - int c; - -public: - C(int _a, int _c) : A(_a + 2), c(_c) { - } - void display() { - A::display(); - std::cout << c << std::endl; - } -}; - -// class D : public B, public C { -// protected: -// int d; - -// public: -// D(int _a, int _b, int _c, int _d) :A(_a), B(_a, _b), C(_a, _c), d(_d){}; - -// void display() { -// A::display(); -// B::display(); -// C::display(); -// std::cout << d << std::endl; -// } -// }; - int main() { - // D objD(1, 2, 3, 4); - // objD.display(); - // cout << "---\n" << sizeof(A) << endl << sizeof(B) << endl << sizeof(C) << endl; - // cout << -13 % 6 << endl; - cout << "---"; - endl(cout); - endl(cout); - cout << "---"; - endl(cout); + Factorial<20> a; + cout << a.value << endl; return 0; } \ No newline at end of file