Difference between revisions of "Programming Test"

From MPSWiki
Jump to: navigation, search
(Created page with "==Что будет выведено в результате исполнения следующего кода== class A { public: A() {cout << "A";}...")
 
Line 1: Line 1:
 
==Что будет выведено в результате исполнения следующего кода==
 
==Что будет выведено в результате исполнения следующего кода==
class A
+
<code><pre>class A
 
 
 
{
 
{
 
 
public:
 
public:
 
             A() {cout << "A";}
 
             A() {cout << "A";}
 
 
             ~A() {cout << "~A";}
 
             ~A() {cout << "~A";}
 
 
 
 
             virtual void f() {cout << "fA";}
 
             virtual void f() {cout << "fA";}
 
 
};
 
};
 
 
  
 
class B : public A
 
class B : public A
 
 
{
 
{
 
 
public:
 
public:
 
 
             B() {cout << "B";}
 
             B() {cout << "B";}
 
 
             ~B() {cout << "~B";}
 
             ~B() {cout << "~B";}
 
 
 
 
             virtual void f() {cout << "fB";}
 
             virtual void f() {cout << "fB";}
 
 
};
 
};
 
 
  
 
class C : public A
 
class C : public A
 
 
{
 
{
 
 
public:
 
public:
 
 
             C() {cout << "C";}
 
             C() {cout << "C";}
 
 
             ~C() {cout << "~C";}
 
             ~C() {cout << "~C";}
 
 
 
 
             virtual void f() const {cout << "fC";}
 
             virtual void f() const {cout << "fC";}
 
 
};
 
};
 
 
  
 
int main(int argc, char* argv[])
 
int main(int argc, char* argv[])
 
 
{
 
{
 
 
             A* pA1 = new A(), *pA2 = new B(), *pA3 = new C();
 
             A* pA1 = new A(), *pA2 = new B(), *pA3 = new C();
 
 
             pA1->f();
 
             pA1->f();
 
 
             pA2->f();
 
             pA2->f();
 
 
             pA3->f();
 
             pA3->f();
 
 
  
 
             delete pA1;
 
             delete pA1;
 
 
             delete pA2;
 
             delete pA2;
 
 
             delete pA3;
 
             delete pA3;
 +
            return 0;
  
            return 0;
+
}</pre></code>
  
}
+
#fAfBfA~C~B~A
 +
#AABACfAfBfA~A~A~A
 +
#ABACAfAfBfA~C~B~A
 +
#AABACfAfAfA~C~B~A
 +
#ABAACfAfAfA~C~B~A
 +
#AABACfAfBfA~C~B~A
 +
#AABACfAfBfA~A~B~C
 +
#ни один не подходит
 +
#ошибка компилятора

Revision as of 07:14, 11 March 2019

Что будет выведено в результате исполнения следующего кода

class A
{
public:
            A() {cout << "A";}
            ~A() {cout << "~A";}
            virtual void f() {cout << "fA";}
};

class B : public A
{
public:
            B() {cout << "B";}
            ~B() {cout << "~B";}
            virtual void f() {cout << "fB";}
};

class C : public A
{
public:
            C() {cout << "C";}
            ~C() {cout << "~C";}
            virtual void f() const {cout << "fC";}
};

int main(int argc, char* argv[])
{
            A* pA1 = new A(), *pA2 = new B(), *pA3 = new C();
            pA1->f();
            pA2->f();
            pA3->f();

            delete pA1;
            delete pA2;
            delete pA3;
            return 0;

}
  1. fAfBfA~C~B~A
  2. AABACfAfBfA~A~A~A
  3. ABACAfAfBfA~C~B~A
  4. AABACfAfAfA~C~B~A
  5. ABAACfAfAfA~C~B~A
  6. AABACfAfBfA~C~B~A
  7. AABACfAfBfA~A~B~C
  8. ни один не подходит
  9. ошибка компилятора