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

Пишем свой класс, спецификатор доступа protected - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ При вычитании целочисленного типа неправильно вычисляется http://www.cyberforum.ru/cpp-beginners/thread1496239.html
Доброго времени суток. Вычитаю два массива и записываю в новый массив. m=chisob-chikl; получаетя ,что 8-18=-96. Что не так?
C++ Замена элемента из множества Подскажите с оптимальным решением задачи. Имеется динамический vector элементов для подстановки. std:vector<std::string> letters_rep; letters_rep.push_back("r"); letters_rep.push_back("u"); letters_rep.push_back("z"); letters_rep.push_back("w"); http://www.cyberforum.ru/cpp-beginners/thread1496217.html
C++ Ассоциативный массив своими руками
Подскажите, пожалуйста, как реализовать такую конструкцию: array = 324;
C++ Stl vector как массив
Есть функция принимающая указатель на массив и его длину и копирующая его в другой массив определенный указателем. void SetMass(float *pMass, int plengthMass) { mMass = new float(plengthMass); lengthMass = plengthMass; memcpy(mMass,pMass,sizeof(float)*plengthMass); }
C++ Копирование при полиморфизме http://www.cyberforum.ru/cpp-beginners/thread1496190.html
Всем доброго дня ! Почему при полиморфизме вызывается конструктор копировщик только базового класса (строка 70) ? Получаю ошибку. Мне нужна полноценная копия. Заранее спасибо !!!
C++ Нужно перевести программу с Visual basic на с++ ... подробнее

Показать сообщение отдельно
xEmpire
23 / 23 / 9
Регистрация: 07.12.2012
Сообщений: 169
Завершенные тесты: 1
09.07.2015, 22:54     Пишем свой класс, спецификатор доступа protected
Цитата Сообщение от hoggy Посмотреть сообщение
это нормально - иметь не виртуальную функцию-член.
которая для всех работает одинаково.

только причем здесь данные-члены?
Ну если у нас есть абстрактный класс, следовательно создать экземпляр этого класса не возможно.
Если в нашем классе есть методы, которые должны быть для наследников реализованы по разному, они объявленные как чистые виртуальные методы, иначе это просто методы.
Если чистый виртуальный метод должен быть реализацией (в наследуемом классе у перекрытого метода будет изменена область видимости на protected | private), а не интерфейсом в наследуемом классе, то он должен быть объявлен с областью видимости protected иначе, если использовать этот метод виртуальным вызовом, то вызов этого метода будет разрешен, независимо, какая область видимости этого метода в наследнике.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
class Foo {
public:
    virtual void Test() const = 0 ;    
};
 
class Bar : public Foo {
    void Test() const override
    {
         std::cout << "test";
    }
};
 
int main() {
    Foo *p = new Bar();
    p->Test(); // вызов функции будет разрешен
}
При расширении этого класса (наследуем интерфейс), переопределяя виртуальные методы при их реализации обращаясь к данным-членам суперкласса, зачем нам использовать get и set методы, если хочется работать напрямую? Почему не сделать в суперклассе данных защищенным, а в наследуемом сделать их закрытыми и при расширении работать с данными напрямую, а при работе извне -используя set и get методы?
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru