Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
кдз / кдз программирование черновик.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
64.23 Кб
Скачать

Int main () {

Child ch (7);

Parent &p = ch;

std::cout << p.getName();

return 0;

Ответ: нет закрывающей скобки "}" в конце блока main.

b)

#include <iostream>

class Parent {

protected:

int m_value;

public:

Parent (int value): m_value(value) {}

virtual const char* getName () {return "Parent";}

};

class Child: public Parent {

public:

Child (int value): Parent(value) { }

virtual const char* getName () const {return "Child";}

};

Int main () {

Child ch (7);

Parent &p = ch;

std::cout << p.getName ();

return 0;

}

Ответ: нет ошибок. Вернет Parent.

c)

#include <iostream>

class Parent {

protected:

int m_value;

public:

Parent (int value): m_value(value) {}

virtual const char* getName() { return "Parent"; }

};

class Child: public Parent

{

public:

Child (int value): Parent(value) {}

virtual const char* getName () override {return "Child";}

};

Int main () {

Child ch (7);

Parent p = ch;

std::cout << p.getName ();

return 0;

}

Ответ: нет ошибок. Вернет Parent.

d)

#include <iostream>

class Parent final {

protected:

int m_value;

public:

Parent (int value): m_value(value) {}

virtual const char* getName () {return "Parent";}

};

class Child: public Parent {

public:

Child (int value): Parent(value) {}

virtual const char* getName () override {return "Child";}

};

Int main () {

Child ch (7);

Parent &p = ch;

std::cout << p.getName();

return 0; }

Ответ: главный класс не может инициализировать ключевым словом final, так как он наследуется, а final исключает наследование класса.

e)

#include <iostream>

class Parent {

protected:

int m_value;

public:

Parent (int value): m_value(value) { }

virtual const char* getName () {return "Parent";}

};

class Child: public Parent {

public:

Child (int value): Parent(value){}

virtual const char* getName () = 0;

};

const char* Child::getName() {

return "Child";

}

Int main () {

Child ch (7);

Parent &p = ch;

std::cout << p.getName ();

return 0;

}

Ответ: невозможно использование объекта абстрактного класса Child (что это значит??).

f)

#include <iostream>

class Parent {

protected:

int m_value;

public:

Parent (int value): m_value(value) {}

virtual const char* getName () {return "Parent";}

};

class Child: public Parent {

public:

Child (int value): Parent(value) {}

virtual const char* getName () {return "Child"; }

};

Int main () {

Child *ch = new Child (7);

Parent *p = ch;

std::cout << p->getName();

delete p;

return 0;

}

Ответ: нет ошибок. Вернет Child.

Итоговый тест №8.

Объектно-ориентированное программирование в языке C++.

Тест

Задание №1

a) Напишите класс с именем Point. В классе Point должны быть две переменные-члены типа double: m_a и m_b со значениями по умолчанию 0.0. Напишите конструктор для этого класса и функцию вывода print ().

Следующая программа:

#include <iostream>

Int main () {

Point first;

Point second (2.0, 5.0);

first.print ();

second.print ();

return 0;

}

Должна выдавать следующий результат:

Point (0, 0)

Point (2, 5)

Ответ:

#include <iostream>

using namespace std;

class Point {

private:

double a_m = 0, b_m = 0;

public:

Point() {

a_m = 0;

b_m = 0;

}

Point(double a, double b) {

a_m = a;

b_m = b;

}

~Point() {};

void print() {

cout << "Point (" << a_m << "," << b_m << ")" << endl;

}

};

Соседние файлы в папке кдз