- •Int main () {
- •Int main () {
- •Int main () {
- •Int main (){
- •Int main () {
- •Int main () {
- •Int main () {
- •Int main () {
- •Int main () {
- •Int main () {
- •Итоговый тест №8.
- •Int main () {
- •Int main() {
- •Int main () {
- •Int main() {
- •Int main () {
- •Int main() {
- •Int main () {
- •Int main() {
- •Итоговый тест№9 Перегрузку операций.
- •Int main () {
- •Int main() {
- •Int main () {
- •Int main()
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;
}
};
