#include class A { public: virtual void fuck()=0; }; class B : public A { public: B(int t) : t(t) {} B(const B &src) { t = src.t; } int t; void fuck() override { std::cout << "Fuck B " << t << " times." << std::endl; } }; class C : public A { public: C(int t) : t(t) {} C(const C &src) { t = src.t; } int t; void fuck() override { std::cout << "Fuck C " << t << " times." << std::endl; } }; int main() { A *ab = new B(233); ab->fuck(); A *ac = new C(666); ac->fuck(); return 0; }