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

обьясните функцию простым языком :) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ строки http://www.cyberforum.ru/cpp-beginners/thread253157.html
помогите пожалуйста с задачами: 1.после каждого заданного слова в сообщении поставить восклицательный знак. 2.дан текст, представляющий собой десятичную запись целого числа. вычислить сумму цифр этого числа.
C++ сортировка char по f помогите плиз: Есть массив m на n содержавший слова нужно отсортировать содержание по символу F http://www.cyberforum.ru/cpp-beginners/thread253145.html
Методом Ньютона решить линейное уравнение C++
Всем привет и хорошего настроения! Решаю вычмат. Методом Ньютона надо решить линейное уравненьице. Сам метод запроган. Хочу запрогать процесс нахождения начального приближения x0. Мои рассуждения: с помощью графика определяю границы промежутка, где сидят все корни уравнения. Далее иду с шагом step=0.1 от левого конца этого промежутка, пока не встречу такое х0, что f(x0)*fdx(x0)<=0, где fdx -...
C++ Нужно написать небольшую програмку на С++
Привет! Помогите написать прогрумму небольшую на С++. Мне очень нужно для ООП. Заранее спасибо =)
C++ Сложение двух строк http://www.cyberforum.ru/cpp-beginners/thread253098.html
Проблема: не могу получть результат. Что у меня не так? class base { private: char* str; int size; public: base( char *str1) {
C++ ПРИШЛИТЕ МНЕ ПОЖАЛУЙСТA ФАЙЛ stdlib.h ДЛЯ VS2006 ПРИШЛИТЕ МНЕ ПОЖАЛУЙСТA ФАЙЛ stdlib.h ДЛЯ VS2006 подробнее

Показать сообщение отдельно
dimon1984
40 / 38 / 0
Регистрация: 22.01.2011
Сообщений: 670
06.03.2011, 20:15     обьясните функцию простым языком :)
Обьясните плиз, почему в main() возможна такая d3 = 10.0 + d1; операция? Тоесть на первом месте стоит 10.0 потом обьект. Я понял что это делает друж-ная функция, но хотелось бы узнать как это она делает? Семантику можно?
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
class Distance                //Класс английских расстояний
  {
  private:
    int feet;
    float inches;
  public:
    Distance()                //конструктор без аргументов
      { feet = 0; inches = 0.0; }
    Distance( float fltfeet ) //конструктор (1 арг.)
      {    //Переводит float в Distance
      feet = int(fltfeet);    //feet – целая часть
      inches = 12*(fltfeet-feet); //слева - дюймы
      }
    Distance(int ft, float in)    //конструктор (2 арг.)
      { feet = ft; inches = in; }
    void showdist()              //Вывести длину
      { cout << feet << "\'-" << inches << '\"';}
    friend Distance operator + (Distance, Distance); //дружественный
  };
//---------------------------------------------------------
 
Distance operator + (Distance d1, Distance d2) // d1 + d2
  {
  int f = d1.feet + d2.feet;       //+ футы
  float i = d1.inches + d2.inches; //+ дюймы
  if(i >= 12.0)                    //если больше 12 дюймов,
    { i -= 12.0; f++;  }           //уменьшить на 12 дюймов,
                                   //прибавить 1 фут
  return Distance(f,i);            //Новая длина с суммой
  }
//---------------------------------------------------------
int main()
  {
  Distance d1 = 2.5;         //конструктор переводит
  Distance d2 = 1.25;        //float-feet в Distance
  Distance d3;
  cout << "\nd1 = "; d1.showdist(); 
  cout << "\nd2 = "; d2.showdist();
 
  d3 = d1 + 10.0;            //distance + float: OK
  cout << "\nd3 = "; d3.showdist();
  d3 = 10.0 + d1;            //float + Distance: OK
  cout << "\nd3 = "; d3.showdist();
  cout << endl;
  return 0;
  }
Тоесть к примеру здесь очевидно и понятно:
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
class beta;              //нужно для объявления frifunc
 
class alpha
    {
    private:
      int data;
    public:
      alpha() : data(3) {  }           //конструктор без
                                       //аргументов
      friend int frifunc(alpha, beta); //дружественная
                                       //функция
    };
///////////////////////////////////////////////////////////
class beta
    {
    private:
      int data;
    public:
      beta() : data(7) {  }            //конструктор без
                                       //аргументов
friend int frifunc(alpha, beta);       //дружественная
                                       //функция
    };
///////////////////////////////////////////////////////////
int frifunc(alpha a, beta b)           //определение функции
    {
    return( a.data + b.data );
    }
//---------------------------------------------------------
int main()
    {
    alpha aa;
    beta bb;
 
    cout << frifunc(aa, bb) << endl;   //вызов функции
    return 0;
    }
здесь у функции два аргументы (обьекта) и функция обращается к их полям(данным), а в первом примере не очевидно немного не понятно. Обьясните плиз.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru