Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 03.05.2010
Сообщений: 25

Полиморфизм

02.05.2012, 17:53. Показов 926. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: определите, какие из элементов функций в дереве наследования необходимо сделать виртуальными. Измените реализованные ранее классы так, чтобы объекты этих классов можно было передавать в качестве параметра в функцию.

Вроде все сделал как по образцу.

intel.h
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
#ifndef INTEL_H
#define INTEL_H
# include <iostream>
 
using namespace std;
 
namespace intel{
class Intel {
public:
    Intel();
    virtual ~Intel() {};
    const string GetSpecies();
    const string GetTechnological_process();
    const string GetIntroduced();
    void SetSpecies(const string);
    void SetTechnological_process(const string);
    void SetIntroduced(const string);
 
    virtual void Socket() {}; //  Cокет
    virtual void Support_for_instructions(); // Поддержка
    virtual void Number_of_transistors(); // Число
 
private:
    string Species; // Вид процессора
    string Technological_process; // Технологические процессы
    string Introduced; // Представлен
};
}
#endif
intel.cpp
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
# include <iostream>
#include "intel.h"
#include "Rus.h"
 
using namespace std;
using namespace rus;
 
namespace intel{
 
    Intel::Intel() // инициализация элементов-данных
    {
        Species = Rus("Intel Atom - ");
        Technological_process = Rus("Технологический процесс - ");
        Introduced = Rus("Представлен - ");
    }
    const string Intel::GetSpecies()
    {
        return Species;
    }
    const string Intel::GetTechnological_process()
    {
        return Technological_process;
    }
    const string Intel::GetIntroduced()
    {
        return Introduced;
    }
    void Intel::SetSpecies(const string s)
    {
        Species = s;
    }
    void Intel::SetTechnological_process(const string s)
    {
        Technological_process = s;
    }
    void Intel::SetIntroduced(const string s)
    {
        Introduced = s;
    }
}
atom.cpp
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
# include <iostream>
#include "atom.h"
#include "Rus.h"
 
using namespace std;
using namespace rus;
 
namespace atom{
 
    Atom::Atom() // инициализация элементов-данных
    {
        SetSpecies( GetSpecies() + Rus("Atom - "));
        SetTechnological_process(GetTechnological_process()+Rus("45 нм"));
        SetIntroduced(GetIntroduced() + Rus("2008г."));
    }
    void Atom::Support_for_instructions()
    { int x;
         x = 1;
        cout << Rus("Support_for_instructions - SIMD: SSE, SSE2, SSE3, SSSE3") << endl;
    }
    void Atom::Number_of_transistors()
    {
        cout << Rus("Number_of_transistors - 47 миллионов") << endl;
    }
}
em64t.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# include <iostream>
#include "em64t.h"
#include "Rus.h"
 
using namespace std;
using namespace rus;
using namespace intel;
 
namespace em64t{
 
    EM64T::EM64T() // инициализация элементов-данных
    {
        SetSpecies( GetSpecies() + Rus("EM64T"));
    }
    void EM64T::Socket()
    {
        cout << Rus("Сокет - PBGA437") << endl;
    }
}
ia32.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# include <iostream>
#include "ia32.h"
#include "Rus.h"
 
using namespace std;
using namespace rus;
using namespace intel;
 
namespace ia32{
 
    IA32::IA32() // инициализация элементов-данных
    {
        SetSpecies( GetSpecies() + Rus("IA-32"));
    }
    void IA32::Socket()
    {
        cout << Rus("Сокет - PBGA441") << endl;
    }
}
main.cpp
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
#include "ia32.h"
#include "em64t.h"
#include "rus.h"
using namespace std;
using namespace rus;
using namespace ia32;
using namespace em64t;
 
void WriteCharacters(Intel &a, const char* s)
{
    cout << a.GetSpecies() << endl;
    cout << a.GetTechnological_process() << endl;
    cout << a.GetIntroduced() << endl;
    a.Support_for_instructions();
    a.Number_of_transistors();
    a.Socket();
    cout << endl;
    a.SetSpecies(a.GetSpecies()+Rus(" по имени "));
    cout << a.GetSpecies() << endl;
    cout << endl;
 
}
int main()
        {
             IA32 i;
             cout << Rus("\n\n\n Характеристика первого процессора\n\n");
             WriteCharacters(i,"IA-32");
 
             EM64T e;
             cout << Rus("\n\n\n Характеристика второго процессора\n\n");
             WriteCharacters(e,"EM64T");
 
    return 0;
}
rus.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "Rus.h"
#include <windows.h>
 
using namespace std;
namespace rus {
// Русификация вывода в консольное окно
char* Rus(const char *s1)
{ char *s2;
    s2 = new char[strlen(s1)+1];
    AnsiToOem(s1,s2); // Перекодировка
    return s2;
}
}
atom.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef ATOM_H
#define ATOM_H
# include <iostream>
# include "intel.h"
 
using namespace std;
using namespace intel;
 
namespace atom{
class Atom : public Intel {
public:
    Atom();
    virtual ~Atom() {};
    virtual void Support_for_instructions(); // Поддержка
    virtual void  Number_of_transistors(); // Число
};
}
#endif
em64t.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef EM64T_H
#define EM64T_H
# include <iostream>
# include "atom.h"
 
using namespace std;
using namespace atom;
 
namespace em64t{
class EM64T : public Atom {
public:
    EM64T();
    virtual ~EM64T() {};
    virtual void Socket(); // сокет
};
}
#endif
ia32.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef IA32_H
#define IA32_H
# include <iostream>
# include "atom.h"
 
using namespace std;
using namespace atom;
 
namespace ia32{
class IA32 : public Atom{
public:
    IA32();
    virtual ~IA32() {};
    virtual void Socket(); // сокет
};
}
#endif
rus.h
C++
1
2
3
4
5
6
7
8
#ifndef RUS_H
#define RUS_H
 
namespace rus {
// Русификация вывода в консольное окно
char* Rus(const char *);
}
#endif
Когда пересобираю выводит ошибку
||=== 6, Debug ===|
obj\Debug\em64t.o||In function `~Intel':|
D:\OLD\labok4\6\intel.h|11|undefined reference to `vtable for intel::Intel'|
obj\Debug\intel.o||In function `Intel':|
D:\OLD\labok4\6\intel.cpp|10|undefined reference to `vtable for intel::Intel'|
D:\OLD\labok4\6\intel.cpp|10|undefined reference to `vtable for intel::Intel'|
||=== Build finished: 3 errors, 0 warnings ===|
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2012, 17:53
Ответы с готовыми решениями:

Полиморфизм в объектно-ориентированном программировании.Перегрузка функций
Помогите,пожалуйста,написать программу.В DevC++.

Полиморфизм
Значит вот выдумал только что такой вот пример дабы обрести понимание полиморфизма. Скажите пожалуйста, перегрузка методов, как в...

Полиморфизм
Я хотел реализовать множество, используя множественное наследование, но когда написал template &lt;class T&gt; class set { ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2012, 17:53
Помогаю со студенческими работами здесь

Полиморфизм
Всем доброго времени суток.Сразу к делу. Если описывать с помощью полиморфизма подклассы и потом динамично их создавать ,то можно вызывать...

Полиморфизм
Всем привет...Проблема в такой задачке, вот условие... В окне приложения первоначально появляются 4 поля ввода, относящиеся к двум...

Полиморфизм.
Доброго времени суток. Если задача : При запуске приложение показывает окно фиксированного размера с квадратной областью 500х500. Ее...

Полиморфизм
Помогите сделать в коде полиморфизм. Тему особо не понимаю Если что, базовый класс - &quot;Страна&quot; и &quot;Представитель&quot;....

Полиморфизм
Здравствуйте :) Я пытался читать про полиморфизм. Читал-читал, но не очень дошло. Понял, что можно переопределить виртуальную функцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru