Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 19

В наследнике(-ах) требуется изменить возвращаемый тип этих функций.

09.02.2014, 19:59. Показов 3044. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть базовый класс. Есть наследник базового класса.

В базовом классе есть два виртуальных метода - Get(int id) и Set(int id). В наследнике(-ах) требуется изменить возвращаемый тип этих функций. Как такое можно сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.02.2014, 19:59
Ответы с готовыми решениями:

Требуется изменить тип файла и изменить шрифт в документе
Здравствуйте, вопрос такой: сделал в фокспро 2.5 вывод данных туда-то туда, а необходимо, выводить их в формате xls, но в данном формате...

Требуется изменить тип перекрестной ссылки на рисунок
Здравствуйте! Исходные данные: есть документ с одним рисунком, под которым есть номер рисунка, и далее строка со ссылкой на рисунок....

Непонятный возвращаемый тип
Расскажите какой тип должен быть у переменной idRe, чтобы можно было бы присвоить ему значение s.length , если s объект класса string?

5
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
09.02.2014, 20:03
почти никак. это уже будут другие функции и они не будут вызываться при попытке их вызвать через указатель на базовый класс.
почти - потому что есть только одна возможность: если эти функции в базовом классе возвращают указатель на класс, то в производном классе можно возвращать указатели на производные классы от этого класса.
2
245 / 246 / 38
Регистрация: 08.04.2013
Сообщений: 927
09.02.2014, 20:17
chadushkind, можно еще раз перегрузить эти функции. сделать что-то такое(не уверен, что это то, что Вы хотели)
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
class first
{
public:
    first (int a):d(a){};
    ~first(){};
    void set(int a)
    {
        cout << "first set is called" << endl;
        d = a;
    }
    void get()
    {
        cout << d << endl;
    }
private:
    int d;
};
 
class second: public first
{
public:
    second(int a):first(a){};
    ~second(){};
    int set(int a)
    {
        cout << "second set is called" << endl;
        first::set(a);
        return 0;
    }
};
 
int main()
{
    second a(35);
    a.get();
    a.set(25);
    a.get();
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 19
09.02.2014, 23:10  [ТС]
metaluga145, спасибо за пример. Не совсем понял, что означает запись:
C++
1
:d(a)
в объявлении конструктора первого класса, да и во втором тоже не понял. Можете пояснить, пожалуйста?

И еще вопрос. При наследовании, после двоеточия ставится ключевое слово public. Для чего оно ставится? Так нужно(поступать всегда?), в соответствии с правилами? Или это означает, что наследоваться будет только публичная часть базового класса? Или какой-то соблюдаемый стиль?
0
245 / 246 / 38
Регистрация: 08.04.2013
Сообщений: 927
09.02.2014, 23:28
Цитата Сообщение от chadushkind Посмотреть сообщение
Не совсем понял, что означает запись:
это то же самое, что
C++
1
first (int a):{d = a;};
То, что я написал выше, -это инициализация, то есть, можно сначала создать переменную, а потом ей присвоить, а можно выделить память и сразу туда положить что-то - это и будет инициализация при выделении памяти под переменную. так просто быстрее работает.
Цитата Сообщение от chadushkind Посмотреть сообщение
да и во втором тоже не понял
переменная d на самом деле принадлежит классу first, но ее надо как-то инициализивароть, для этого мы вызываем конструктор класса first. То есть, при вызове конструктора класса second, будет вызван конструктор класса first. Это обязательная часть. Об этом подробнее можете почитать в литературе.
Цитата Сообщение от chadushkind Посмотреть сообщение
ключевое слово public
да, будет унаследована часть public. неплохо написано тут
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.02.2014, 23:28
Цитата Сообщение от chadushkind Посмотреть сообщение
что означает запись:
Это список инициализации конструктора. Так вызывается конструктор базового класса и инициализируются члены (в том числе константные).
Цитата Сообщение от chadushkind Посмотреть сообщение
после двоеточия ставится ключевое слово public. Для чего оно ставится?
Наследование в C++ может быть разным. public - наследование интерфейса, private/protected - наследование реализации. При public наследовании все поля базового класса наследуются с теми же спецификаторами доступа (private конечно не доступны). При protected - публичные члены базового класса становятся защищенными. При private - публичные и защищенные члены становятся закрытыми.
Если нужно приводить указатель/ссылку дочернего класса к базовому, то наследование должно быть public.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.02.2014, 23:28
Помогаю со студенческими работами здесь

Наследование и возвращаемый тип
Коллеги, приветствую. Вопрос по проектированию больше, как лучше перегрузить метод базового класса в подклассах? Есть абстрактный...

Инкапсуляция(возвращаемый тип)
Не могу понять, (3-7), какой возвращаемый тип? void или Secundi? class Secundi { private int a, b; public...

Возвращаемый тип по умолчанию
Приветствую всех! В книге Р. Лафоре &quot;Объектно-ориентированное программирование в C++&quot; прочитал следующее: Скажите, с чем...

Функции, возвращаемый тип
Как сделать так, что бы функция возвращала разный тип данных, в зависимости от некой глобальной переменной? Например, если эта...

Возвращаемый тип в java
Вопрос такой как создать возвращаемый метод в java я знаю что void это не возвращаемый, а как сделать возращаемый? вот пример кода что я...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru