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

Чем внешняя функция отличается от дружественной кроме как синтаксисом? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция для сортировки одномерных массивов http://www.cyberforum.ru/cpp-beginners/thread1122345.html
Разработать функцию для сортировки одномерных массивов А и В и организовать функцию для поиска элементов, которые имеются в нескольких экземплярах или в массиве А, или в массиве (или в обоих...
C++ Поиск слова в файле Файл состоит из слов и цифр. Я ввожу в компилятор слово для поиска. Считываю. Дальше вообще без идей. Мне нужно чтобы после нахождения нового слова происходила перезапись последующего текста. http://www.cyberforum.ru/cpp-beginners/thread1122339.html
Почему не выводит на экран массив C++
вспоминаю С++ и не могу понять почему не выводит на экран массив)и напишите где можно было бы лучше написать и как) #include<iostream> #include<clocale> #include<conio.h> using namespace std;...
C++ Переносимость программы в семействе windows
Ранее писал программу на visual 2010 и windows 7, затем перешел на visual 2013 и windows 8.1. И теперь выскакивает вот такая ошибка: Unhandled exception at 0x5E3F42C8 (msvcr120d.dll) in...
C++ Ошибка компиляции: template-id does not match any template declaration http://www.cyberforum.ru/cpp-beginners/thread1122335.html
Здравствуйте. Помогите, пожалуйста: #include <iostream> using namespace std; template <typename T> T maxn(T*, const int*); template <> char* maxn<char*>(char*, const int*);
C++ Не выполняется код Нужно сделать так, чтобы компилятор прожовував функцию sprintf. Возможно как-то это сделать? Error 1 error C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s... подробнее

Показать сообщение отдельно
DrOffset
7349 / 4449 / 1009
Регистрация: 30.01.2014
Сообщений: 7,292
18.03.2014, 00:14
delexa Путаница у тебя такая, жутко аж
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
class A
{
public:
    void foo1(); // функция класса, или метод(!). Где она определена (внутри класса или нет)
                  // влияет только на связывание(!). 
};
 
void foo2(); //Свободная функция, это как раз и есть то, что можно называть твоим термином "внешняя"
 
class B
{
public:
    friend void foo2(); // объявление дружественной свободной(!) функции классу B
};
 
void foo2() // определение дружественной свободной(!) функции классу B
{ }
 
class C
{
public:
    friend void A::foo1(); //объявление дружественного метода(!) из класса А классу С
};
 
class D
{
public:
    static void foo3(); //объявление статической(!) функции класса D,
                       // где ее определение влияет только на связывание(!)
};
Методы класса всегда привязаны к объекту класса. Они имеют неявный параметр для доступа к данным объекта.
Статические функции класса имеют доступ к данным класса (статическим) и данным объекта (если в такую функции передать этот объект).
Дружественные функции класса могут быть как методами, так и свободными функциями, имеют доступ к данным класса, который определил их дружественными себе. Но для этого туда (в функцию) нужно передать каким-либо образом объект этого класса.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru