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

перегрузить функции - C++

Восстановить пароль Регистрация
 
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
04.01.2011, 23:01     перегрузить функции #1
можно ли как нибудь функцию перегрузить вне класса. На сколько я знаю перегружают в классе.
а функция то-вывода...толи массива толи матрицы
C++
1
2
void out(int a,int x[],int n);
void out(int a,int x[][n],int n);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2011, 23:01     перегрузить функции
Посмотрите здесь:

Перегрузить C++
перегрузить оператор ++ C++
C++ Перегрузить оператор
Перегрузить C++
Как перегрузить *. ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.01.2011, 23:02     перегрузить функции #2
^Tecktonik_KiLLeR, Можно. Это и есть перегрузка.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
void print(int one)
{
   std::cout<<one<<'\n';
}
 
void print(int one, int sec)
{
   std::cout<<one<<'\n'<<sec<<'\n';
}
 
int main()
{
    print(5);
    print(10, 6);
    return 0;
}
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
04.01.2011, 23:04  [ТС]     перегрузить функции #3
а оператор скажем "+" только в классе можно?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.01.2011, 23:08     перегрузить функции #4
^Tecktonik_KiLLeR, Нет. Но при этом как минимум один должен быть объектом класса.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
struct what
{
    int a;
    what(int a_=0):a(a_)
    {
    }
};
 
what operator +(const what& one, int sec)
{
    return what(one.a+sec);
}
 
int main()
{
   what a(5);  
   a=a+5;
   std::cout<<a.a<<'\n';
   return 0;
}
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
04.01.2011, 23:09     перегрузить функции #5
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
а оператор скажем "+" только в классе можно?
Не только, можно и в структуре, обединение.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
04.01.2011, 23:09  [ТС]     перегрузить функции #6
вот лол.
пытаюсь в файле *.h бъявить функцию ввода матрицы
C++
1
2
3
4
5
6
7
8
9
void out(int x[][n],int n)// matrix's output
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        cout<<x[i][j]<<" ";
    cout<<endl;
    }
}
так пишет что с переменной n не знаком..пишу без n выводит какую то ошибку..
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.01.2011, 23:11     перегрузить функции #7
^Tecktonik_KiLLeR, Ну так верно. Подавай указатель на указатель - так будет лучше. Или же n должен быть глобальной константой или же #define-ом
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
04.01.2011, 23:12  [ТС]     перегрузить функции #8
Цитата Сообщение от asics Посмотреть сообщение
обединение
приведите пример.
в файле у меня функций много,не правильно...и скажите если функция в объединении, при его вызове что либо изменяется?

Добавлено через 38 секунд
Цитата Сообщение от ForEveR Посмотреть сообщение
^Tecktonik_KiLLeR, Ну так верно. Подавай указатель на указатель - так будет лучше. Или же n должен быть глобальной константой или же #define-ом
оппа..
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
04.01.2011, 23:13     перегрузить функции #9
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
приведите пример.
Там все аналогично до структуры, пример см. пост #4.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
04.01.2011, 23:14  [ТС]     перегрузить функции #10
ForEveR, как же можно глобальной объявить размер?Не правильно же так..изменяться нельзя
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.01.2011, 23:21     перегрузить функции #11
^Tecktonik_KiLLeR, Ну дык для этого и существует динамические массив не правда-ли?
C++
1
2
3
4
5
6
7
8
9
void out(int** x,int n)// matrix's output
{
        for(int i=0;i<n;i++)
        {
                for(int j=0;j<n;j++)
                cout<<x[i][j]<<" ";
        cout<<endl;
        }
}
Чем плохо?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.01.2011, 23:24     перегрузить функции #12
^Tecktonik_KiLLeR, тогда юзайте динамическое выделение памяти. Стыдно набить столько сообщений и репы (в том числе в формуе по плюсам) и пытаться юзать конструкцию типа
C++
1
2
3
int N;
std::cin >> n;
int arr[n];
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
04.01.2011, 23:25  [ТС]     перегрузить функции #13
Цитата Сообщение от silent_1991 Посмотреть сообщение
int N; std::cint >> n; int arr[n];
если это я писал то это опечатка.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.01.2011, 23:35     перегрузить функции #14
Хм, а чем по сути это отличается от void out(int a,int x[][n],int n);?
Мы чётко знаем, что компилятору должны быть известны все размеры массива, который передаётся в функцию, кроме первого. Так вот, он это должен знать на стадии компиляции. Как и размер создаваемого массива. Я в своём примере пытаюсь сообщить программе размер создаваемого массива на стадии выполнения, а вы размер передаваемого массива во время выполнения. Так в чём отличие?
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
04.01.2011, 23:42  [ТС]     перегрузить функции #15
silent_1991, да я знаю в чем отличие тамА вот с функциями я этого не увидел..значит либо указатели,либо дин.массивы,или же глоб.константа
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2011, 23:44     перегрузить функции
Еще ссылки по теме:

Не получается перегрузить << C++
C++ Перегрузить operator*
C++ Перегрузить оператор -

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.01.2011, 23:44     перегрузить функции #16
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
либо указатели,либо дин.массивы,или же глоб.константа
Точно
Yandex
Объявления
04.01.2011, 23:44     перегрузить функции
Ответ Создать тему
Опции темы

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