Форум программистов, компьютерный форум CyberForum.ru

Наследование и композиция - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализовать перегрузку функции,которая вычисляет объемы куба и шара http://www.cyberforum.ru/cpp-beginners/thread999241.html
Уважаемые программисты,помогите пожалуйста с программой. Реализовать программно перегрузку функции, которая вычисляет объемы куба и шара, которые задаются классом Figura, который необходимо предварительно создать. Реализовать в классе перегрузку конструкторов. Продемонстрировать работу класса в основной части программы. Буду очень благодарен.. Добавлено через 18 часов 13 минут Пожалуйста)
C++ В чем отличие одной формы записи от второй? Добрый вечер! Подскажите пожалуйста, кроме формы записи, в чет отличие for (x=1; x<=20; x++) { cout<<x; if (x%5==) cout<<endl; else cout<<'\t'; http://www.cyberforum.ru/cpp-beginners/thread999238.html
C++ Каждую строку матрицы Z(5,4) преобразовать по правилу
Дана задача. Каждую строку матрицы Z(5,4) преобразовать по правилу: если максимальный элемент не первый, то поменять его местом с первым. Вывести количество таких строк, исходную и преобразованную матрицы Напишите пожалуйста программу с двумерным массивом в visual c++. Заранее спасибо
C++ проверьте на правильность
Вычислить значения функции у=4х3-2х2+5 для значений х, изменяющихся от -3 до 1, с шагом 0.1. #include <stdio.h> #include <iostream> #include <conio.h> #include <math.h> using namespace std; int main() { double y, x; cout <<"vvedite x:"<<endl;
C++ Перевод из Паскаля в C++ http://www.cyberforum.ru/cpp-beginners/thread999215.html
Пожалуйста помогите перевести одну функцию из Паскаля в C++. Буду очень признательна, так как очень плохо знаю Паскаль, а C++ тоже не очень хорошо, но я учусь. Хотя бы начало, чтоб я поняла некоторые нюансы. procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var i,j: Byte; xx,yy,xt,yt,sx,sy:Integer; w:Real; begin for i:=1 to k...
C++ Двумерный массив,календарь Написать программу, чтобы она выводила календарь на 2013 год. С помощью двумерного массива. Написать нужно в Си! подробнее

Показать сообщение отдельно
SilentHunt
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 13

Наследование и композиция - C++

05.11.2013, 23:44. Просмотров 433. Ответов 5
Метки (Все метки)

Добрый день. Помогите, пожалуйста, разобраться в приведенном примере.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
#include <fstream>
using namespace std;
 
std::ofstream out("D:\\1.txt");
 
class GameBoard
{
public:
    GameBoard(){out << "GameBoard()\n";}
    GameBoard(const GameBoard&)
    {
    out<<"GameBoard(const GameBoard&)\n";
    }
    GameBoard& operator=(const GameBoard)
    {
     out<<"GameBoard::operator=\n";
     return *this;
    }
    ~GameBoard(){out << "~GameBoard()\n";}
};
 
 
class Game
{
GameBoard gb;
public:
    Game(){out<<"Game()\n";}
    Game(const Game& g): gb(g.gb)
    {
        out<<"Game(const Game& g)\n";
    }
    Game(int){out<<"Game(int)\n";}
    Game& operator=(const Game& g)
    {
        gb = g.gb;
        out<<"Game::operator=()\n";
        return *this;
    }
class Other {};
operator Other() const
{
    out<<"Game::operator Other()\n";
}
~Game()
{
out<<"~Game()\n";
}
 
};
 
class Chess: public Game{};
 
 
void f(Game::Other){}
 
class Checkers:public Game
{
public:
    Checkers(){out<<"Checkers()\n";}
    Checkers(const Checkers& c): Game(c) //но у "Game" нет конструктора, принимающего "Checkers"!
    {
        out<<" Checkers(const Checkers& c)\n";
    }
    Checkers& operator=(const Checkers& c)
    {
        Game::operator=(c);                  //Как мы передаем в "Game::operator="  "const Checkers&", о котором "Game" в жизни не слышал?
        out<<"Checkers& operator=";
        return *this;
    }
 
};
 
int main()
{
    Chess d1; //здесь понятно, генерируется конструктор для chess и вызываются GameBoard() и Game()
                  //GameBoard()
                  //Game()
    out<<"1\n";
    Chess d2(d1); //генерируется копирующий конструктор и вызываются GameBoard(const GameBoard&) Game(const Game& g)
                        //GameBoard(const GameBoard&)
                        //Game(const Game& g)
    out<<"2\n";
    //Chess d3(1);//отсутствует конструктор для int
    d1=d2;          
                       //GameBoard(const GameBoard&)  Не очень понятно как тут оказался копирующий конструктор?
                       //GameBoard::operator=
                      //~GameBoard()
                      //Game::operator=()                     И почему его не оказалось здесь?
    out<<"3\n";
    f(d1);        //Game::operator Other()  преобразование Game в Other
    out<<"4\n";
    Game::Other go;
    out<<"5\n";
    //d1=go;    Нет подходящего оператора
    Checkers c1,c2(c1);  //GameBoard()
                                 //Game()
                                 //Checkers()
                                 //GameBoard(const GameBoard&)
                                 //Game(const Game& g)
                                 // Checkers(const Checkers& c)
    out<<"6\n";
    c1=c2;                    //GameBoard(const GameBoard&)   //Откуда опять копирующий конструктор?
                                 //GameBoard::operator=
                                 //~GameBoard()
                                 //Game::operator=()
                                 //Checkers& operator=
}
Видимо, я что-то сильно недопонял в наследовании, наставьте на путь истинный, а то уже второй день голову ломаю.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru