Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Erjay
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 91
#1

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

05.08.2013, 17:19. Просмотров 392. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2013, 17:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не функция-член класса (C++):

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

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

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

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

Функция-член Ошибка класса - C++
Непонятная ошибка связанная с функцией-членом. Я в панике + почему-то не могу внести хедер с include ввожу #include &quot;header.h&quot; Работаю в...

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

6
Misterkat
05.08.2013, 17:27
  #2

Не по теме:

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

0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,290
Записей в блоге: 2
Завершенные тесты: 1
05.08.2013, 17:29 #3
Цитата Сообщение от Erjay Посмотреть сообщение
Это потому что, она объявлена дружественной?
да, дружественные функции, хоть и не являются членами класса, все же имеют доступ к закрытым членам.
1
alex1392
31 / 31 / 3
Регистрация: 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
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
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.
, Просветил!

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

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

И снова класс Матрицы с функция-член класса для нахождения определителя - C++
Проблема в следующем испробовал все варианты, которые закомментированы, все рабочие ну некоторые с отрицательными числами неправильно...

Переопределение операторов как член-класса и как дружественная функция - C++
Привет. Задача создать класс целых чисел, для него нужно переопределить операторы ++ и + как функции-члены и -- и - как дружественные...

Член-ссылка на другой член класса - C++
Есть класс Dot с двумя членами - x и y. Требуется еще один класс, который хранит width i height, но реализация этого класса ничем не...


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

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

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