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

Чтение всего файла fstream - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевод многострочного текста с английского языка на азбуку Морзе http://www.cyberforum.ru/cpp-beginners/thread1168675.html
Выполнить перевод многострочного текста (char text) с английского языка на азбуку Морзе. Для перевода использовать следующую таблицу преобразования: A .- J .--- Q --.- Y -.--...
C++ Составить программу так, чтобы массив Y заполнялся значениями функции Составить программу так, чтобы массив Y заполнялся значениями функции. F(x)=tg(x) - x a=0 b=pi/4 a и b- начало и конец отрезка m=10 -кол-во элементов http://www.cyberforum.ru/cpp-beginners/thread1168653.html
C++ Определит количество тех чисел, которые делятся на 7
Даны 100 целых чисел, принадлежащих интервалу . Определите количество тех из них, которые делятся на 7. Вариант задания: 843; 516; 610; 91; 13; 90; 766; 214; 189; 981; 629; 723; 510; 532; 751; 904;...
C++ Консольное меню MVC
С моего последнего проектика прошло не так уж много времени, а я вновь здесь и уже с новыми исходниками:) Снова паттерны и каркас MVC, и снова я жду от вас комментариев:) Итак, мой новый проект...
C++ Как изменить размер динамического массива структур после того как был добавлен товар http://www.cyberforum.ru/cpp-beginners/thread1168633.html
Подскажите как мне изменить размер динамической массива структур после того как был добавлен товар , countProduct-это и есть размер массива структур. void addProduct(int countProduct, Product...
C++ Подсчет в строке слов, состоящих только из цифр.(функция) 5. Подсчет в строке слов, состоящих только из цифр. подробнее

Показать сообщение отдельно
DrOffset
7351 / 4451 / 1009
Регистрация: 30.01.2014
Сообщений: 7,292
07.05.2014, 17:53
Цитата Сообщение от OrmaJever Посмотреть сообщение
То есть родительские методы переносятся частично, да я смогу к обьекту HL::string применить родительский метод append, но с операторами и конструкторами такая вот беда. Я один считаю что это не правильно?
Родительские методы переносятся все (кроме конструкторов - думаю понятно почему, если не понятно, то стоит поразмышлять о том, что конструктор привязан к типу).
Оператор operator= переносится из базового класса. Но есть такая штука, как сокрытие методов. Поясню на более очевидном примере:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
class B
{
public:
    B & foo(char const *) { std::cout << "B::foo\n"; return *this; }
};
 
 
class A : public B
{
public:
    A & foo(int) { std::cout << "A::foo\n"; return *this; }
};
 
 
int main()
{
    A a;
 
    //a.foo("test"); // ошибка
    a.foo(1); // OK
}
Видишь, метод foo из базовго класса недоступен. Его скрыл метод foo из наследника.
Теперь вернемся к operator=. Дело в том, что в твоем наследнике HL::string уже есть operator=, это автогенерированный
C++
1
HL::string & operator=(HL::string const &)
вот он-то и скрыл оператор из базового string. В С++ есть стандартный способ сделать скрытую функцию видимой.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace HL{ 
    class string : public std::string
    {
    public:
        using std::string::operator=;
 
        string &operator<<( const char );
        string &operator<<( const char * );
        string &operator<<( const string & );
 
        string toLower( void ) const;
        string toUpper( void ) const;
        string replace( const char *, const char * );
    };
Добавлено через 13 минут
Да, в С++11 появилась возможность наследовать и конструкторы. Точно так же, через using.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru