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

Как правильно вызывать функцию объекта из другой функции того же объекта? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Из односвязного списка двухсвязный http://www.cyberforum.ru/cpp-beginners/thread400818.html
Есть Класс который имеет интерфейс АТД который включает методы для добавления, удаления, поиска элементов в соответствии с логикой работы структуры данных. Здесь структура Данных - циклический...
C++ часто встречаемое слово В входном файле нужно найти одно или несколько наиболее часто встречаемых слова. программа довольно часто встречается, может у кого есть исходник? http://www.cyberforum.ru/cpp-beginners/thread400816.html
Как усовершенствовать программу? C++
Доброго времени суток! Начал изучать с++,написал простенькую прогу чтобы попрактиковаться,хотелось бы узнать как можно ещё более усовершенствовать прогу или усложнить немного? Программа...
C++ Ввод функций с клавиатуры...
:wall:Как можно в С/С++ вводить функцию с клавиатуры и потом что бы можно было считать значение с этой функцией.....Например функция y=sin(x)*cos(x) y=...наша функция с клавиатуры Благодарен...
C++ Чтение чисел из файла, содержащего концевые пробелы и переносы строк. http://www.cyberforum.ru/cpp-beginners/thread400802.html
Здравствуйте! Помогите, пожалуйста, разобраться со следующей задачей. В текстовом файле содержатся целые числа, разделенные произвольным количеством пробелов и переносов строк. Нужно эти числа из...
C++ Преобразование типов. Дружественные функции Создать класс комплексных чисел. Определить перегруженную функцию, возвращающую максимальный из двух аргументов. Функция не является членом класса комплексных чисел. Перегруженные функции имеют... подробнее

Показать сообщение отдельно
Bers
Заблокирован
07.12.2011, 07:31
Цитата Сообщение от greeezz Посмотреть сообщение
я не нашел ни одного примера где используется разрешение контектса а объявлении классов.
Ну вот например:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct Base {  void View() { std::cout<< "Base\n"; } };
struct Next: protected Base 
{  
    void View(int v) { std::cout<< "Next\n"; } 
    Base::View;  //методы базового типа 
                 //вообще то protected в наследнике.
                 //хотя вообще то, дабы не смущать общественность
                //лучше перед разрешением контекста в объявлении
                 //ставить ключевое слово using
};
 
 
int main()
{
    Next test; 
    test.View(); //наследник вызывает "разрешенный" 
                     //protected метод своего предка
    test.View(1);
}
Добавлено через 13 минут
и ещё для наглядности вот:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct Base {  protected: void View() { std::cout<< "Base\n"; } };
struct Next: protected Base 
{  
    void View(int v) { std::cout<< "Next\n"; } 
    using Base::View;  //обрати внимание, в базовом классе
                       //метод находится в protected зоне
};
 
 
int main()
{
    Next test; 
    test.View(); //однако мы указали компилятору, 
                 //что для наследника, методы
                 //находятся в зоне модификаторов
                 //доступа наследника
    test.View(1);
}
Ну и напоследок:

C++
1
2
3
4
5
6
struct Base { private: void View() { std::cout<< "Base\n"; } };
struct Next: protected Base 
{  
    void View(int v) { std::cout<< "Next\n"; } 
    using Base::View;  // error C2876: Base: не все перегрузки доступны
};
К приватным методам-данным наследник доступа не имеет. Инкапсуляция
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru