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

Доступ к приватному методу наследника через родителя - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Каким образом в переменную записывается результат каждого рекурсивного вызова? http://www.cyberforum.ru/cpp-beginners/thread1101839.html
Всем привет! Подскажите по данной задачи, немного недопонимаю: ФАКТОРИАЛ: int FACT(int n) {int res; if(n==1) return 1; res=n*FACT(n-1); return(res); } Почему когда я вместо return 1 пишу return 0 он выводит ноль, а когда 1 - выводит результат?
C++ После легкой модификации кода он перестал компилироваться Здравствуйте,у меня такая вот проблема: есть готовый проект в CodeBlocks,нужно лишь изменить одну строчку в тексте программы. Пробовал сам,но при сборке выдает следующие ошибки: mingw32-g++.exe -Wall -O2 -I\usr -c C:\Users\Макен\Desktop\Snake\menu.cpp -o obj\Release\menu.o mingw32-g++.exe -L"C:\Program Files (x86)\CodeBlocks\MinGW\lib" -o bin\Release\Snake.exe obj\Release\field.o... http://www.cyberforum.ru/cpp-beginners/thread1101838.html
Определить, сколько среди чисел четных и сколько нечетных C++
2.Вводится последовательность целых чисел, 0 – конец последовательности. Сколько среди них четных чисел и сколько нечетных.
C++ Передача динамической матрицы в функцию
Здравствуйте подскажите пожалуйста, как можно передать динамическую матрицу, заданную и инициализированную следующим образом cout<<"Введите A --> "; cin>>A; cout<<"Введите B --> "; cin>>B; int **Arr = new int* ; for (int i = 0; i < B; i++) {
C++ Вывести текст на экран, меняя местами каждые два соседних слова http://www.cyberforum.ru/cpp-beginners/thread1101806.html
Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова
C++ Переделать через указатели #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; void main() { int sum = 0, temp = 0, n; { cout<<"n= "; cin>>n; } подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
21.02.2014, 10:53
Цитата Сообщение от stikkas Посмотреть сообщение
Такое поведение считается нормальным?
Такое поведение чем то сродни привязке параметра по умолчанию во время компиляции для виртуальных функций. Может быть Вы слышали выражение:
C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg.
Сейчас правда речь не о сравнении C и C++, а о том, что в этих языках есть тонкие места, с которыми рано или поздно сталкивается любой разработчик. Надо их просто знать. И да, всё, что соответствует стандарту языка, считается нормальным.
C++11 §11.5
The access rules (Clause 11) for a virtual function are determined by its declaration and are not affected by the rules for a function that later overrides it.
И приведен практически Ваш пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class B {
public:
   virtual int f();
};
class D : public B {
private:
   int f();
};
void f() {
   D d;
   B* pb = &d;
   D* pd = &d;
   pb->f(); // OK: B::f() is public,
            // D::f() is invoked
   pd->f(); // error: D::f() is private
}
Добавлено через 8 минут
Цитата Сообщение от ValeryS Посмотреть сообщение
речь идет о уже готовых библиотеках классов
Согласен. Но ты же не будешь отрицать, что:
Цитата Сообщение от Tulosba Посмотреть сообщение
Обычно уровень видимости вообще не меняют.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru