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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
chadushkind
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 19
#1

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

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

Есть базовый класс. Есть наследник базового класса.

В базовом классе есть два виртуальных метода - Get(int id) и Set(int id). В наследнике(-ах) требуется изменить возвращаемый тип этих функций. Как такое можно сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2014, 19:59     В наследнике(-ах) требуется изменить возвращаемый тип этих функций.
Посмотрите здесь:

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

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

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

Перегрузка оператора - возвращаемый тип - C++
class A { private: int x; public: A& operator += (int y); }; A& A::operator += (int y) { x = y; ...

Перегруженные функции. Возвращаемый тип - C++
Добро всем времени суток. Изучаю Р.Лаворе книгу и наткнулся на непонятныий мне аспект. Вот есть код: String(char s) { ...

Как можно объяснить выполнение этих функций? - C++
void push(st *s, int i) // функция заталкивания элемента в стек { s->data = i; } int pop(st *s) // функция извлечения элемента...

Какое отличие в работе двух этих функций? - C++
Никак не могу понять различие в работе функций type& func() и type func(). Сделал себе микро-пример, но все равно не пойму. ...

Составить программу для нахожления точки пересечения этих функций - C++
Кто нить кто понимает с++ помогите с задачкой :) Дана парабола y=ax2+bx+с и прямая y=kx+m. Составить программу для нахожления точки...

Изменить тип списка - C++
Здравствуйте. Нужна помощь с изменением типа списка. Я сделал программу для обработки списка но как оказалось не того типа. Нужно...

Error C2062: тип «char» не требуется - C++
Подскажите пожалуйста как исправить. Когда программа была в одном файле, все прекрасно работало, но вот после разделения на файлы MVS стал...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.02.2014, 20:03     В наследнике(-ах) требуется изменить возвращаемый тип этих функций. #2
почти никак. это уже будут другие функции и они не будут вызываться при попытке их вызвать через указатель на базовый класс.
почти - потому что есть только одна возможность: если эти функции в базовом классе возвращают указатель на класс, то в производном классе можно возвращать указатели на производные классы от этого класса.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
09.02.2014, 20:17     В наследнике(-ах) требуется изменить возвращаемый тип этих функций. #3
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;
}
chadushkind
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 19
09.02.2014, 23:10  [ТС]     В наследнике(-ах) требуется изменить возвращаемый тип этих функций. #4
metaluga145, спасибо за пример. Не совсем понял, что означает запись:
C++
1
:d(a)
в объявлении конструктора первого класса, да и во втором тоже не понял. Можете пояснить, пожалуйста?

И еще вопрос. При наследовании, после двоеточия ставится ключевое слово public. Для чего оно ставится? Так нужно(поступать всегда?), в соответствии с правилами? Или это означает, что наследоваться будет только публичная часть базового класса? Или какой-то соблюдаемый стиль?
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
09.02.2014, 23:28     В наследнике(-ах) требуется изменить возвращаемый тип этих функций. #5
Цитата Сообщение от chadushkind Посмотреть сообщение
Не совсем понял, что означает запись:
это то же самое, что
C++
1
first (int a):{d = a;};
То, что я написал выше, -это инициализация, то есть, можно сначала создать переменную, а потом ей присвоить, а можно выделить память и сразу туда положить что-то - это и будет инициализация при выделении памяти под переменную. так просто быстрее работает.
Цитата Сообщение от chadushkind Посмотреть сообщение
да и во втором тоже не понял
переменная d на самом деле принадлежит классу first, но ее надо как-то инициализивароть, для этого мы вызываем конструктор класса first. То есть, при вызове конструктора класса second, будет вызван конструктор класса first. Это обязательная часть. Об этом подробнее можете почитать в литературе.
Цитата Сообщение от chadushkind Посмотреть сообщение
ключевое слово public
да, будет унаследована часть public. неплохо написано тут
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.02.2014, 23:28     В наследнике(-ах) требуется изменить возвращаемый тип этих функций. #6
Цитата Сообщение от chadushkind Посмотреть сообщение
что означает запись:
Это список инициализации конструктора. Так вызывается конструктор базового класса и инициализируются члены (в том числе константные).
Цитата Сообщение от chadushkind Посмотреть сообщение
после двоеточия ставится ключевое слово public. Для чего оно ставится?
Наследование в C++ может быть разным. public - наследование интерфейса, private/protected - наследование реализации. При public наследовании все поля базового класса наследуются с теми же спецификаторами доступа (private конечно не доступны). При protected - публичные члены базового класса становятся защищенными. При private - публичные и защищенные члены становятся закрытыми.
Если нужно приводить указатель/ссылку дочернего класса к базовому, то наследование должно быть public.
Yandex
Объявления
09.02.2014, 23:28     В наследнике(-ах) требуется изменить возвращаемый тип этих функций.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru