Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/2: Рейтинг темы: голосов - 2, средняя оценка - 5.00
Erjay
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 91
1

Не функция-член класса

05.08.2013, 17:19. Просмотров 444. Ответов 6
Метки нет (Все метки)

Фрагмент из книги, об дружественной функции operator<<:
"Обратите внимание, что она не является функцией-членом класса String". Из чего это видно? Это потому что, она объявлена дружественной?
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
class String
{
public:
    //CONSTRUCRORS
    String();
    String (const char * const);
    String (const String &);
    ~String();
 
    //OVERLOAD OPERATORS
    char & operator[] (int offset);
    char   operator[] (int offset) const;
    String operator+  (const String&);
    void   operator+= (const String&);
    String & operator=(const String &);
    friend ostream& operator<<
        (ostream& theStream, String& theString);
    //COMMON METHODS OF DOSTYPE
    int GetLen () const {return itsLen;}
    const char * GetString () const {return itsString;}
    
private:
    String (int);
    char * itsString;
    unsigned short itsLen;
};
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2013, 17:19
Ответы с готовыми решениями:

Перегрузка операций: friend-функция или функция-член класса
Здравствуйте, меня интересует вопрос, в чем разница при перегрузке операторов через operator и...

Сам вопрос: почему функция-член одного класса не вызывается из функции-члена другого класса?
//Щас всё объясню. Так, имеем два класса, в одном я определил функцию-член. Все конструкторы и...

Функция-член шаблонного класса
Как правильно объявить функцию-член шаблонного класса? Класс: template &lt;class SType&gt; class Set...

Не срабатывает функция-член класса
Есть следующий код: #include &quot;stdafx.h&quot; #include &lt;Windows.h&gt; #include &quot;std_lib_facilities.h&quot; ...

Член-функция класса не работает
Доброго вечера! Только что написал вот такой несложный класс, который определяет две характеристики...

6
Misterkat
05.08.2013, 17:27
  #2

Не по теме:

C++
1
2
3
4
private:
* * String (int);
* * char * itsString;
* * unsigned short itsLen;
Может конечно туплю, но разве не в "protected:" это должно лежать?

0
Dani
1395 / 639 / 134
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
Завершенные тесты: 1
05.08.2013, 17:29 3
Цитата Сообщение от Erjay Посмотреть сообщение
Это потому что, она объявлена дружественной?
да, дружественные функции, хоть и не являются членами класса, все же имеют доступ к закрытым членам.
1
alex1392
31 / 31 / 4
Регистрация: 24.07.2013
Сообщений: 187
05.08.2013, 17:36 4
Извени но не очень понятен твой вопрос ) давай отвечу лудши по другому )) мы делаем ее друживственной для того чтобы не мучаться при обращении к полям таво класса с которым мы работаем внутри функции а при перегрузки острима то ты перегружаеш острим и она не как не можит быть методом этого класса так как является методом класса ostream
но вопрос я всеравно не понял )) извените за флуд ))
0
Erjay
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 91
05.08.2013, 17:39  [ТС] 5
Либерти, опысывает даные в private.
0
Croessmah
++Ͻ
15803 / 8937 / 1719
Регистрация: 27.09.2012
Сообщений: 21,957
Записей в блоге: 2
Завершенные тесты: 2
05.08.2013, 17:49 6

Не по теме:

Цитата Сообщение от Misterkat Посмотреть сообщение
Может конечно туплю, но разве не в "protected:" это должно лежать?
Не обязательно. Если не ожидается наследование, то можно всё смело кидать в private.



Цитата Сообщение от Erjay Посмотреть сообщение
Обратите внимание, что она не является функцией-членом класса String
Не является, но имеет доступ к данным класса. Да и дружба какая-то односторонняя - у класса есть друг, но сам класс технически об этом не в курсе.
Цитата Сообщение от Erjay Посмотреть сообщение
Из чего это видно?
Ну попробуйте в ней написать this->itsLen. Не получилось?
Цитата Сообщение от Erjay Посмотреть сообщение
Это потому что, она объявлена дружественной?
Это потому, что она не относится к классу. А friend нужен для того, чтобы уведомить компилятор о том, что данная функция может обращаться к закрытым данным класса
2
Misterkat
05.08.2013, 17:52     Не функция-член класса
  #7

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
Не по теме:
Не обязательно. Если не ожидается наследование, то можно всё смело кидать в private.
O_o, Просветил!

0
05.08.2013, 17:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2013, 17:52
Привет! Вот еще темы с ответами:

Функция-член Ошибка класса
Непонятная ошибка связанная с функцией-членом. Я в панике + почему-то не могу внести хедер с...

Непонятно работает функция - член класса
Задача создать телефонный справочник с использованием бинарного дерева. Проблема возникает при...

Функция-друг одно класса, член другого.
Привет. Не поможете как сделать чтобы функция одного класса была функцией-другом другого класса? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru