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

Операторная ф-ция - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удалить числа превышающее N http://www.cyberforum.ru/cpp-beginners/thread204276.html
удаление чисел превышающих N, остальные вывести на экран
C++ пишет ошибку отсутствия заголовка функции вообще пишет ошибку отсутствия заголовка функции... вот код #include "stdafx.h" #include <stdio.h> #include <windows.h> void zadanie1 (); void zadanie2 (); void zadanie3 (); void zadanie4 (); http://www.cyberforum.ru/cpp-beginners/thread204273.html
C++ лабораторная по теме файлы
Дан бинарный файл, содержащий числа а1, b1, a2, b2... Каждая пара чисел a и b определяет числитель и знаменатель натуральной дроби a/b. Проверить образуют ли дроби арифметическую прогрессию. По результатам проверки вывести на экран соответствующее сообщение.
C++ Системы счисления. Немного додумать.
Здравствуйте. В общем возникла небольшая проблема. Запарился на моменте, который выделеный красным цветом.(ориентироваться особо на него не нужно, там бред :)). Требуется сделать так: перебираем по очереди элементы строки. Если элемент меньше 10, то запомнить его, если больше 10, то прибавляем(или отнимаем) 55 и запоминаем. Вроде как тут нужно записать все это в массив char. Прибавляем(или...
C++ По массиву http://www.cyberforum.ru/cpp-beginners/thread204249.html
Дан массив A(n) упорядоченный по возрастанию, и число a, о котором известно, что оно не равно ни одному из элементов массива, больше первого и меньше последнего.Найти 2 элемента ( их индексы и значения) в интервале между которыми находится значение a. ( условный оператор не использовать ).
C++ Упорядочить строки матрицы по возростанию их максимальных элементов Здравствуйте! Помогите пожалуюста разобраться в данном задании "Дана матрица NxM.Упорядочить её строки по возростанию их максимальных элементов" вот мой код, но программа не работает, можете показать где у меня допущена ошибка и обьяснить работу 3-ей части программы, т.е "Построение строк матрицы по возрастанию их максимальных членов". Заранее большое спасибо. #include <iostream.h>... подробнее

Показать сообщение отдельно
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
06.12.2010, 00:08     Операторная ф-ция
Добрый вечер,

вот есть код:

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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <algorithm>
 
using namespace std;
 
class generator
{
private: int& num;
 
public: explicit generator(int& n) : num(n)
    {
        cout << "In constructor fnc" << endl;
    }
 
    int operator ()()
    {
        cout << "In operator fnc" << endl;
        return num++;
    }
 
    ~generator()
    {
        cout << "Destroy object" << endl;
    }
};
 
int  main()
{
    int n = 0;
    vector<int> vect(20);
 
    generate(vect.begin(), vect.end(), generator(n));
 
    cout << "After" << endl;
    system("PAUSE");
    return 0;
}
главный вопрос по поводу строки
C++
1
generate(vect.begin(), vect.end(), generator(n));
я так понимаю запись
C++
1
generator(n)
создает временный объект который уничтожается после вызова ф-ции generate(), первый раз вызывается конструктор, а потом перегруженная ф-ция
C++
1
int operator ()()
1. Вопрос - почему по аналогию я не могу в программе создать тот же временный объект? например
C++
1
2
3
4
5
6
7
int  main()
{
    int n = 0;
    vector<int> vect(20);
    generator(n);
    .....
   ...
2. как компилятор различает после вызова контструктора
C++
1
generator(n)
что следующий вызов именно операторной ф-ции ведь она объявлена без параметров?

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