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

Статические свойства классов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Даны 2 непустых файла. Определить номер строки и номер символа http://www.cyberforum.ru/cpp-beginners/thread1138158.html
Помогите с программой, не могу понять, как сделать. Даны 2 непустых файла. Определить номер строки и номер символа, где встречается 1-ый символ отличный от других
C++ Вычислите и запомните сумму и число положительных элементов каждого столбца матрицы Дана целочисленная матрица A(N, M). Вычислите и запомните сумму и число положительных элементов каждого столбца матрицы. Результаты выведите в виде двух строк. Не могу понять, как сделать... Помогите, пожалуйста http://www.cyberforum.ru/cpp-beginners/thread1138151.html
C++ Ошибка в цикле с очередью
Добрый день! Придумал глупый, но рабочий цикл проверки элементов очереди queue Моя очередь содержит числа с плавающей запятой (double). В этом цикле, числа меньше M умножаются, а больше складываются. После этого цикла на экране появляются результаты суммирования и умножения такие : 77898387 4114119301 не понимаю откуда такие результаты если почти все значения очереди (есть 1цы)...
C++ Функции и структуры данных
Прошу помочь с задачей. 1. Для многочлена задать тип данных, описывающий его структуру. 2. Написать функции, описывающие это многочлен: а) Input: для ввода данных с клавиатуры; б) Output: вывод на экран в наглядном виде. Примечания: 1. Головная программа осуществляет ввод переменных, вычисление и вывод. 2. Для описания многочлена используется structure. 3. Все функции...
C++ Создать класс знаков Зодиака http://www.cyberforum.ru/cpp-beginners/thread1138115.html
Помогите пожалуйста с заданием, не могу справиться сам. Заранее спасибо, вот задание: Описать структуру с именем ZNAK, содержащую следующие поля: - фамилия, имя; - знак Зодиака; - дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по знакам...
C++ Динамический список Ребят нужна помощь создал список, вывод его на экран. Теперь нужно реализовать дополнение списка после элемента с заданным номером, помогите пожалуйста. #include <stdio.h> #include <string.h> #include <conio.h> #include <iostream.h> void main() подробнее

Показать сообщение отдельно
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
03.04.2014, 21:19     Статические свойства классов
Цитата Сообщение от OrmaJever Посмотреть сообщение
но private то зачем
protected, private наследование - это нечастое явление. Сам я его еще не использовал.
Цитата Сообщение от OrmaJever Посмотреть сообщение
зачем наследовать класс без ничего
не совсем так... public и protected методы будут так же доступны внутри наследника, но через наследника уже этот метод не позовешь т.к. он стал private. Пример лучше покажет
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
46
47
48
49
50
51
52
#include <iostream>
 
class ClassA
{
    public:
        void func1()
        {
            std::cout << "func1 calls func2" << std::endl;
            func2();
        }
        
    protected:
        void func2()
        {
            std::cout << "func2 calls func3" << std::endl;
            func3();
        }
        
    private:
        void func3()
        {
            std::cout << "func3 has been called" << std::endl;
        }
};
 
class ClassB: private ClassA
{
    public:
        void callFunc1()
        {
            std::cout << "b calls func1()" << std::endl;
            func1();
        }
};
 
class ClassC: public ClassA
{  
};
 
 
int main()
{
    ClassB b;
    ClassC c;
    b.callFunc1();
    //b.func1();   //error
    std::cout << "c calls func1()" << std::endl;
    c.func1();
    
    system("PAUSE>NULL");
    return 0;
}
b.func1() позвать нельзя, потому-что он стал private. А если наследовать через public, то можно было бы позвать, что c.func1() и доказывает.
Если говорить конкретно зачем оно надо - для композиции. Private наследование - это так называемое has-a наследование (один класс содержит другой как член. Пример: класс Машина содержит мотор), но не is-a(public наследование - это is-a) (машина - это не мотор). Мы можем обращаться к мотору через интерфейс - педали. Машина сама работает с мотором, водителю нужно знать только про педали. Так и здесь: main'y не надо знать про func1(), у него есть "педали" callFunc1(). Так почему бы просто не использовать композицию? Через композицию protected члены не будут видны, а через наследование будут.
Надеюсь, хоть что то да прояснилось.
PS Может эксперты пример получше приведут, уже с более реальной задачей.
 
Текущее время: 08:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru