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

ООП Дружественные Функции, Операторы. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа для расчета радиостанций http://www.cyberforum.ru/cpp-beginners/thread40126.html
День добрый. Помогите написать программу для учета 3х радиостанций и человека стоящего в центре. На С. На рисунке 1,2 и 3 радиостанции, 4 человек. Программа на С. Параметры радиостанций: координаты,дальность действия. Установить возможность связи 2(3-х) абонентов с заданными координатами, а также ближайшей к ним станции.
C++ Работа со списками (нужны комментарии) #include <stdio.h> #include <conio.h> struct Telem { int inf; //INFORM ELEMENT Telem *link; // ykazatelb na sledyioshii element } *begL, *endL; //=================================== ============================= // dobavlenie v nachalo http://www.cyberforum.ru/cpp-beginners/thread40124.html
C++ графика в BC31
При инициализации графики я пользовался : int gdriver=DETECT,gmode; initgraph(&gdriver, &gmode, "C\BORLANDS\BGI\"); И у меня возник вопрос: Как инициализировать графику чтоб прога шла через .exe, и допустим если С++ не установлен на компе!!
Убедительная просьба помочь... C++
Ув. программисты, помогите нубу в Borland C, пожалуйста!.. Есть 2 задания, не могу никак написать... Уже облазил весь форум почти... Всё равно что-то неправильно =( 1. Постановка задачи По индивидуальному заданию создать функцию для обработки символьных строк. За образец брать библиотечные функции обработки строк языка С, но не применять их в своей функции. Предусмотреть об¬работку ошибок...
C++ Посчитать длительность в секундах после того как График начинает убывать http://www.cyberforum.ru/cpp-beginners/thread40111.html
Ну вот собственно в чем проблема: По идее программа должна посчитать длительность в секундах после того как График начинает убывать после Uout=7.77(это максимум) и до конца этого графика. Подсчитав у меня вышло 1.5 секунды. Эта программа считает только до того как график доходит до экстремума Uout=7.77. дальше программа начинает считать погрешность до тех пор пока не дойдет до E=0.1, но это...
C++ Пара простеньких заданий Добрый день.Я хотел бы обратиться с просьбой помочь мне с проблемой.Я не могу выполнить два простеньких задания так как я в С не очень силён.Могли бы вы помочь мне в этом. 1. Постановка задачи Для разряженной матрицы целых чисел в соответствии с индивидуальным заданием создать модуль доступа к ней, у котором обеспечить экономию памяти при размещении данных. Индивидуальные задания Все нулевые... подробнее

Показать сообщение отдельно
Red Planet
 Аватар для Red Planet
49 / 10 / 2
Регистрация: 20.09.2009
Сообщений: 263
20.06.2010, 18:32     ООП Дружественные Функции, Операторы.
Вопрос о дружественных функциях.
Дружественные отношения не наследуются. Дружественные функции не имеют доступа к членам производного класса, чьи базовые классы содержали объявления этих функций.
Цитата отсюда, в книге прочитал примерно то же самое.
Но почему тогда следующий код работает исправно (Количество комнат удваивается)?
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
53
54
55
56
#include <vcl>
#pragma hdrstop
#include <iostream>
 
using namespace std;
 
class building {
    int rooms, floors, area;
    public: void set_rooms (int num);
            int get_rooms ();
            friend int mult_two (building b1);
 
};
 
//Производный класс.
class house: public building {
    int bedrooms, baths;
    public: void set_bedrooms (int num);
            int get_bedrooms ();
};
 
void building::set_rooms(int num) {
    rooms=num;
}
 
void house::set_bedrooms(int num) {
    bedrooms=num;
}
 
int house::get_bedrooms() {
    return bedrooms;
}
 
int building::get_rooms() {
    return rooms;
}
 
int mult_two (building b1) {
    return 2*b1.rooms;
}
//---------------------------------------------------------------------------
 
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
    system ("title Temp");
    building b;
    b.set_rooms(25);
    cout <<mult_two (b)<<'\n';
    house h2;
    h2.set_rooms(15);
    cout <<mult_two (h2)<<'\n';
    system ("pause");
    return 0;
}
//---------------------------------------------------------------------------
Добавлено через 12 минут
Догадываюсь, но не уверен. "Дети" наследуют переменные от своих "родителей". Дружественные функции и имеют доступ к этим унаследованным переменным (int rooms, floors, area в данном случае), но не имеют доступа к собственным переменным "детей" (int bedrooms, baths).
Прав ли я?
 
Текущее время: 10:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru