ОО1/Питалице

Извор: SI Wiki
< ОО1
Датум измене: 31. јануар 2021. у 04:09; аутор: KockaAdmiralac (разговор | доприноси) (Krenuto sa prepisivanjem ispitnih primera koji su nestali sa telekom drajva)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

На овој страници скупљени су разни испитни примери који су се можда појавили на испиту али им се не зна рок појављивања или једноставно није било довољно добро формулисаних питалица из тог рока како би се одвојили у страницу рока.

  • За питања са више одговора, тачни одговори су подебљани и уоквирени.
  • За питања за које се одговори уносе, тачни одговори су подвучени и сакривени: овако.
  • Притисните на следеће дугме како бисте их сакрили или открили:

1. задатак

Шта је од наведеног тачно:

  1. Објекат јавно изведене класе наслеђује само имплементацију основне класе, а не и уговор
  2. Објекат заштићене изведене класе је једна врста објекта основне класе у свакој глобалној функцији
  3. Код приватног извођења наслеђује се уговор основне класе
  4. Јавним извођењем само се успоставља релација садржаја између објекта изведене класе и наслеђеног подобјекта основне класе
  5. Ништа од понуђеног

2. задатак

Шта исписује следећи код:

#include <iostream>
using namespace std;

template <typename T> class Klasa {
public:
    template <typename U> void m (U u) { cout << "1"; }
    void m (int u) {cout << "2"; }
};

template <typename T> class Klasa <T*> {
public:
    template <typename U> void m (U u) { cout << "3"; }
    void m (int u) {cout << "4"; }
};

int main () {
    Klasa <int*>().m<float>(9);
    Klasa <int> ().m(9);
    Klasa <int> ().m('a');
    Klasa <int*>().m<int>(2);
}

Одговор: 3213

3. задатак

Шта исписује следећи код:

#include <iostream>
using namespace std;

class Klasa {};

int main () {
    try {
        try {
            cout << "0";
            throw Klasa();
            cout << "1";
        }
        catch (...) { cout << "2"; }
        cout << "3";
    }
    catch (Klasa i) {cout << "4"; }
    cout << "5";
    return 0;
}

Одговор: 0235

4. задатак

Шта важи за апстрактне класе?

  1. не могу се правити објекти апстрактне класе зато што она не може имати деструктор
  2. наткласа апстрактне класе је обавезно апстрактна класа
  3. класа изведена из апстрактне класе мора да редефинише све наслеђене апстрактне методе
  4. не могу се стварати објекти апстрактне класе већ само показивачи и рефенце на њу, који могу показивати (упућивати) на објекте конкретних изведених класа које нису апстрактне

5. задатак

Шта исписује следећи код:

#include <iostream>
using namespace std;

void f() noexcept {}
void g() noexcept (!noexcept (f())) {}
void h() noexcept (noexcept (g())) {}
void m() noexcept (noexcept (f()) || noexcept (g())) {}

int main () {
    cout << (noexcept (f()) ? 1:0);
    cout << (noexcept (g()) ? 1:0);
    cout << (noexcept (h()) ? 1:0);
    cout << (noexcept (m()) ? 1:0);
    return 0;
}

Одговор: 1001

6. задатак

Шта исписује дати програм:

#include <iostream>
using namespace std;

class A {
public:
    static int i;
    A() { i++; }
};
int A::i = 0;

class B : virtual public A {
public:
    B() { i++; }
};

class C : public A {
public:
    C() { i++; }
};

class D : public B, public C {
public:
    void pisi() { cout << i; }
};

int main () {
    D d;
    d.pisi();
    return 0;
}

Одговор: 4

7. задатак

Шта исписује следећи код:

#include <iostream>
using namespace std;

class A {
public:
    virtual void m() {}
};
class B : public A {};
class C : public B {};

int main () {
    A *pa = new B();
    B *pb = new C();
    B *b = dynamic_cast <B*>(pa);
    C *c = dynamic_cast <C*> (pa);
    C *d = dynamic_cast <C*> (pb);
    if (b == nullptr) cout << 'b';
    if (c == nullptr) cout << 'c';
    if (d == nullptr) cout << 'd';
    return 0;
}
  1. баца се изузетак бад_цаст
  2. д
  3. цд
  4. ц
  5. бцд

8. задатак

Шта исписује следећи код:

#include <iostream>
using namespace std;

class A {
public:
    A(int i) {
        if (i < 5) cout << 'a';
        else throw 'b';
    }
};

int main() {
    int i = 1;
    if (noexcept(A(i++))) cout << i;
    else cout << 2*i;
    return 0;
}

Одговор: 2

9. задатак

Заокружити исправне изразе, ако је дат следећи код:

template <typename T=int, int k=10>
class Niz { T niz[k]; };
  1. Низ<инт*, 20> н1;
  2. Низ<инт*&, 20> н2;
  3. Низ<20> н3;
  4. Низ<> н4;
  5. Низ<доубле, 5.5> н5;
  6. Низ н6;

Напомена: Одговор под ф) се преводи само од C++17 и новијих стандарда.

10. задатак

11. задатак

12. задатак

13. задатак

14. задатак

15. задатак

16. задатак

17. задатак

18. задатак

19. задатак

20. задатак

21. задатак

22. задатак