Quizzes
Site Language: English
Українська
English
Русский
Programming Tests
Login
Sign Up
Programming Tests
Theory
Snippets
Papers
Landing
Android
Prices
FAQ
Cosmo Story
Terms and Conditions
Privacy Policy
Cookies Policy
Send Feedback
destructor
:
Content language: Русский
English
Как порядок вызова конструкторов и деструкторов повлияет на результат и что выведется на экран? #include <iostream> using namespace std; struct A { A() { cout << "A"; } ~A() { cout << "~A"; } virtual void operator()() = 0; }; struct B : A { B() { cout << "B"; } ~B() { cout << "~B"; } void operator()() { cout << "B"; } }; int main(void) { B b; A &a = b; a(); b(); return 0; }
destructor
Какие методы компилятор может автоматически сгенерировать для данного класса?class A { };
destructor
Что будет, если вызвать delete this в деструкторе?
destructor
Имея следующую иерархию классов, что будет выведено на экран при выполнении следующего кода? #include <iostream> using namespace std; class Agregated{ public: Agregated(){ cout<<"Agregated construct"<<endl; } ~Agregated(){ cout<<"Agregated destruct"<<endl; } }; class Base{ protected: Agregated * ptr; public: Base():ptr(NULL){ cout<<"Base construct"<<endl; f(); } virtual ~Base()=0; virtual void f()=0; }; Base::~Base(){ if(ptr) delete ptr; cout<<"Base destruct"<<endl; } void Base::f(){ cout<<"Base f"<<endl; } class Derived: public Base{ public: Derived(){ if(!ptr) ptr = new Agregated; cout<<"Derived construct"<<endl; } ~Derived(){ cout<<"Derived destruct"<<endl; } void f(){} }; int main(){ Base* b = new Derived(); delete b; cin.get(); return 0; }
destructor
Что выведется при выполнении программы: class A { protected: virtual void v() = 0; public: void f() { std::cout << "A::f()" << std::endl; this->v(); } protected: A() { std::cout << "A::A()" << std::endl; this->f(); } }; class B: public A { private: virtual void v() { std::cout << "B::v()" << std::endl; } }; int main() { A *pa = new B; pa->f(); return 0; }
destructor
Корректен ли такой код в плане освобождения ресурсов? #include <exception> struct A { ~A() { throw std::exception(); } };
destructor
Скомпилируется ли следующий код? class clazz { public: clazz(void); ~clazz(int); }; clazz::clazz(void) { } void clazz::~clazz(int a) { }
destructor
Что выведет следующий код: struct A { ~A() { std::cout << "~A()"; } }; struct B : A { ~B() { std::cout << "~B()"; } }; struct C : B { ~C() { std::cout << "~C()"; } }; int main() { std::shared_ptr<A> p(false ? new B() : new C()); return 0; }
destructor
Что будет выведено на экран в результате выполнения такого кода: #include <iostream> struct A { ~A() { std::cout << "~A"; }; }; struct B: public A { virtual ~B() { std::cout << "~B"; }; }; int main() { A *a = new B(); delete a; return 0; }
destructor
Сколько раз будет вызван деструктор класса test в следующей программе: #include <iostream> using namespace std; class test { public: test(int param) { i=param; } test(test &obj) { i=obj.i; } ~test() { cout << "~test()" << endl; } private: int i; }; void func1(test obj) { cout << "func1()" << endl; } void func2(test &obj) { cout << "func2()" << endl; } int main() { test a(1); test b(2); test c(3); func1(a); func2(b); return 0; }
destructor
← Prev
1
2
3
4
5
Next →
Sign Up Now
or
Subscribe for future quizzes