Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2014, 22:06   #1
zla9_kolu4ka
Форумчанин
 
Регистрация: 16.09.2013
Сообщений: 149
По умолчанию множественное наследование...

Код:
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;

class computer_screen{
public:
computer_screen(char*, long, int, int);
void show_screen(void);
private:
char type[32];
long colors;
int x_resolution;
int y_resolution;
};


computer_screen::computer_screen(char* type, long colors, int x_res, int y_res){
strcpy(computer_screen::type, type);
computer_screen::colors = colors;
computer_screen::x_resolution = x_res;
computer_screen::y_resolution = y_res;
}

void computer_screen::show_screen(void){
cout << "Tip ekrana: " << type << endl;
cout << "Colors: " << colors << endl;
cout << "Razreshenie: " << x_resolution << " na " << y_resolution << endl;
}


class mother_board{
public:
mother_board(int, int, int);
void show_mother_board(void);
private:
int processor;
int speed;
int RAM;
};

mother_board::mother_board(int processor, int speed, int ram){
mother_board::processor = processor;
mother_board::speed = speed;
mother_board::RAM = ram;
}


void mother_board::show_mother_board(void){
cout << "CPU: " << processor << endl;
cout << "4astota: " << speed << " MHz" << endl;
cout << "RAM: " << RAM << " Mbait" << endl;
}

class computer : public computer_screen, public mother_board{
public:
computer(char*, int, float, char*, long, int, int, int, int, int);
void show_computer (void);
private:
char name [64];
int hard_disk;
float floppy;
};

computer::computer(char* name, int hard_disk, float floppy, char* screen, long colors, int x_res, int y_res, int processor, int speed, int RAM) : computer_screen(screen, colors, x_res, y_res), mother_board(processor, speed, RAM){
strcpy(computer::name, name);
computer::hard_disk = hard_disk;
computer::floppy = floppy;
}


void computer::show_computer(void){
cout << "Tip: " << name << endl;
cout << "HARD: " << hard_disk << " Mbait" << endl;
cout << "Gibkiy disk: " << floppy << " Mbait" << endl;
show_mother_board();
show_screen();
}


void main(void){
computer my_pc("Compaq", 212, 1.44, "SVGA", 16000000, 640, 480, 486, 66, 8);
my_pc.show_computer();

char ch = getchar();
}

если конструктор computer
Код:
computer::computer(char* name, int hard_disk, float floppy, char* screen, long colors, int x_res, int y_res, int processor, int speed, int RAM) : computer_screen(screen, colors, x_res, y_res), mother_board(processor, speed, RAM){
strcpy(computer::name, name);
computer::hard_disk = hard_disk;
computer::floppy = floppy;
}
подкорректировать и сделать такой:
Код:
computer::computer(char* name, int hard_disk, float floppy) : computer_screen(screen, colors, x_res, y_res), mother_board(processor, speed, RAM){
strcpy(computer::name, name);
computer::hard_disk = hard_disk;
computer::floppy = floppy;
}
И в описании заменить
computer(char*, int, float, char*, long, int, int, int, int, int);
на
computer(char*, int, float);

Если так сделать почему не работает ???
zla9_kolu4ka вне форума Ответить с цитированием
Старый 22.02.2014, 22:16   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Потому что откуда он тогда возьмет значения для полей экрана и материнской платы, если ты передаешь только 3 аргумента? )
Son Of Pain вне форума Ответить с цитированием
Старый 22.02.2014, 22:28   #3
zla9_kolu4ka
Форумчанин
 
Регистрация: 16.09.2013
Сообщений: 149
По умолчанию

Цитата:
Потому что откуда он тогда возьмет значения для полей экрана и материнской платы, если ты передаешь только 3 аргумента? )
покажи код, про который ты говоришь, а то я могу неправильно понять
zla9_kolu4ka вне форума Ответить с цитированием
Старый 22.02.2014, 23:04   #4
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Код:
computer::computer(char* name, int hard_disk, float floppy) : computer_screen(screen, colors, x_res, y_res), mother_board(processor, speed, RAM)
Son Of Pain вне форума Ответить с цитированием
Старый 31.03.2014, 16:55   #5
Alet
Новичок
Джуниор
 
Регистрация: 24.07.2013
Сообщений: 1
По умолчанию

Добрый день! Не стал создавать новую тему, т.к. эта близка.
Изучаю с++, с классами вроде все понятно, раздел наследование (уроки по с++), есть такая фраза
"...Как вы, вероятно, заметили, наследование упрощает программирование в том случае, если производные классы могут обращаться к элементам базового класса с помощью оператора точки. В таких случаях ваши программы могут использовать защищенные элементы класса. Производный класс может обращаться к защищенным элементам базового класса напрямую, используя оператор точку..."

Вот эта фраза не дает покоя несколько дней. Приведу пример (найден на просторах):

Код:
class Base
{
  private:
    int privBase;
  protected:
    int protBase;
  public:
    int pubBase;
};

class Derived : public CBase
{
  public:
    void updateDerived()
    {
      protBase=0;
      pubBase=0;
    }
};

class Derived1 : public Derived
{
  public:
    void updateDerived1()
    {
      protBase=1;
      pubBase=1;
    }
};
Есть базовый класс Base, пусть будет public наследование, класс Derived1 наследует Base. Функция updateDerived обращается к элементам базового класса protBase и pubBase.
Так вот приведите, пожалуйста, пример обращения к элементам базового класса (желательно и к protected и к public) используя оператор "точка".
Alet вне форума Ответить с цитированием
Старый 01.04.2014, 01:21   #6
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Alet Посмотреть сообщение
Так вот приведите, пожалуйста, пример обращения к элементам базового класса (желательно и к protected и к public) используя оператор "точка".
Забейте, это шняга.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Множественное наследование midiss Visual C++ 2 31.05.2013 12:52
Множественное наследование coNsept Общие вопросы C/C++ 5 12.06.2012 17:18
Множественное наследование Jugger Помощь студентам 2 09.12.2011 20:23
Множественное наследование liza kalueva Общие вопросы C/C++ 2 10.03.2010 01:57
Множественное наследование Crucian Общие вопросы Delphi 1 29.12.2008 14:26