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

friend классы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Опять тестовая оболочка - рандом http://www.cyberforum.ru/cpp-beginners/thread961727.html
Написала тест, спасибо Культину, но преподавателя не устраивает. Нужно считывать вопросы с файла с помощью рандома. В тесте 50 вопросов, выбираем их количество а потом генерируем номер каждого вопроса и считываем его. Подскажите как в программе задать что именно ЭТОТ вопрос надо найти и считать...
C++ Создание и использование классов.Работа над ошибками Задали сделать програмку. Вроде бы ничего сложного. Но выбивает ошибки( 1. Дано действительное число a и целое n. Вычислить сумму 1/a+1/a*(a+1)*(a+2) + 1/(a*(a+1)*(a+2)+...+(a+n)) составила программку #include<stdio.h> #include<conio.h> #include<math.h> #include<iostream> http://www.cyberforum.ru/cpp-beginners/thread961725.html
Преобразование C++
О каком преобразовании идет речь в строке 34, если конструктор принимает тип double и аргумент (10.0) записывается в double dReal? // // TypeConversion - demonstrate the implicit conversion // of one type to another // #include "stdafx.h" #include <iostream> using namespace std; class Complex
C++ типы данных
Подскажите как средствами С++ получить доступ к отдельным байтам стандартных типов данных, только без использования асматических вставок.
C++ Мусор в памяти, выделенной динамически http://www.cyberforum.ru/cpp-beginners/thread961704.html
Есть код, выполняет разархивацию файла, закодированного LZ77. Вот его основная часть: цикл в котором проверяется каждый бит в маске и согласно его значению раскодируется файл. Если бит установлен в 0, то следующий байт нужно просто считать как есть, если установлен в 1, то это ссылка на место, где можно найти эту часть файла. while (!infile.eof()) { infile.read(mask, maskSize); ...
C++ оператор delete #include <iostream> #include <clocale> #include <iomanip> using namespace std; int main() { setlocale (LC_ALL,"russian"); struct kniga { char* name ; char* autor ; подробнее

Показать сообщение отдельно
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
25.09.2013, 00:17     friend классы
Нужны для того что бы какой нить функции разрешить доступ к закрытым членам класса. От примерчик:
Есть класс А
C++
1
2
3
4
5
6
class A
{
int a;
public:
A(int aa=10):a(aa){}
};
И есть функция которая принимает переменную типа А например:
C++
1
2
3
4
void f(A a)
{
cout a.a; //будет ошибка потому что доступ к закрытым членам класса запрещен.
}
из этой функции мы не можем обратится к закрытым членам класса А (к закрытому элементу а)

Но если мы в классе А добавим строчку friend void f(A a); (в любом месте класса) например:
C++
1
2
3
4
5
6
7
class A
{
friend void f(A a);
int a;
public:
A(int aa=10):a(aa){}
};
то у нас в функции f можно уже будет обратиться к закрытому члену класса.

Просто если мы объявляем дружественную функцию, то из нее можно обращаться к закрытым элементам класса и все, так же и для классов при объявлении дружественного класса можно будет из того класса который друг можно будет обращаться к закрытым членам того класса для которого этот класс есть другом.
 
Текущее время: 21:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru