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

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

Войти
Регистрация
Восстановить пароль
 
 
AnonymC
1162 / 444 / 23
Регистрация: 23.06.2009
Сообщений: 6,280
Завершенные тесты: 1
#1

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

04.01.2011, 23:01. Просмотров 635. Ответов 15
Метки нет (Все метки)

можно ли как нибудь функцию перегрузить вне класса. На сколько я знаю перегружают в классе.
а функция то-вывода...толи массива толи матрицы
C++
1
2
void out(int a,int x[],int n);
void out(int a,int x[][n],int n);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2011, 23:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос перегрузить функции (C++):

Не получается перегрузить оператор вывода для дружественной функции - C++
Не могу понять почему пытаясь перегрузить оператор вывода использую дружественную функцию, я не могу передать объект по значению, это...

Перегрузить - C++
Уважаемы форумчание нужна помощь, задание связанно с перегузкой операций. Задание: разработать класс оболочку int и перегрузить операции...

Перегрузить - C++
#include <conio> #include <iostream> #include <stdio> using namespace std; class summa { private: double first; int second; ...

перегрузить оператор ++ - C++
Всем привет!!!Тут такое дело, когда запускаю программу она запускается, а когда дело доходит до перегрузки она выдает ошибку((: То есть...

Перегрузить оператор - - C++
Есть 2 масива если в них есть 2 одинаковых числа то з первого масива что бы изменялось на ноль например то число которое есть во втором...

Можно ли перегрузить [][]? - C++
Мне нужна матрица в которой будет определенная область декартовой системы координат из первой четверти. Она может начинаться не в начале...

15
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 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;
}
1
AnonymC
1162 / 444 / 23
Регистрация: 23.06.2009
Сообщений: 6,280
Завершенные тесты: 1
04.01.2011, 23:04  [ТС] #3
а оператор скажем "+" только в классе можно?
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 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;
}
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
04.01.2011, 23:09 #5
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
а оператор скажем "+" только в классе можно?
Не только, можно и в структуре, обединение.
0
AnonymC
1162 / 444 / 23
Регистрация: 23.06.2009
Сообщений: 6,280
Завершенные тесты: 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 выводит какую то ошибку..
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
04.01.2011, 23:11 #7
^Tecktonik_KiLLeR, Ну так верно. Подавай указатель на указатель - так будет лучше. Или же n должен быть глобальной константой или же #define-ом
0
AnonymC
1162 / 444 / 23
Регистрация: 23.06.2009
Сообщений: 6,280
Завершенные тесты: 1
04.01.2011, 23:12  [ТС] #8
Цитата Сообщение от asics Посмотреть сообщение
обединение
приведите пример.
в файле у меня функций много,не правильно...и скажите если функция в объединении, при его вызове что либо изменяется?

Добавлено через 38 секунд
Цитата Сообщение от ForEveR Посмотреть сообщение
^Tecktonik_KiLLeR, Ну так верно. Подавай указатель на указатель - так будет лучше. Или же n должен быть глобальной константой или же #define-ом
оппа..
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
04.01.2011, 23:13 #9
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
приведите пример.
Там все аналогично до структуры, пример см. пост #4.
0
AnonymC
1162 / 444 / 23
Регистрация: 23.06.2009
Сообщений: 6,280
Завершенные тесты: 1
04.01.2011, 23:14  [ТС] #10
ForEveR, как же можно глобальной объявить размер?Не правильно же так..изменяться нельзя
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 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;
        }
}
Чем плохо?
2
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
04.01.2011, 23:24 #12
^Tecktonik_KiLLeR, тогда юзайте динамическое выделение памяти. Стыдно набить столько сообщений и репы (в том числе в формуе по плюсам) и пытаться юзать конструкцию типа
C++
1
2
3
int N;
std::cin >> n;
int arr[n];
0
AnonymC
1162 / 444 / 23
Регистрация: 23.06.2009
Сообщений: 6,280
Завершенные тесты: 1
04.01.2011, 23:25  [ТС] #13
Цитата Сообщение от silent_1991 Посмотреть сообщение
int N; std::cint >> n; int arr[n];
если это я писал то это опечатка.
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
04.01.2011, 23:35 #14
Хм, а чем по сути это отличается от void out(int a,int x[][n],int n);?
Мы чётко знаем, что компилятору должны быть известны все размеры массива, который передаётся в функцию, кроме первого. Так вот, он это должен знать на стадии компиляции. Как и размер создаваемого массива. Я в своём примере пытаюсь сообщить программе размер создаваемого массива на стадии выполнения, а вы размер передаваемого массива во время выполнения. Так в чём отличие?
0
AnonymC
1162 / 444 / 23
Регистрация: 23.06.2009
Сообщений: 6,280
Завершенные тесты: 1
04.01.2011, 23:42  [ТС] #15
silent_1991, да я знаю в чем отличие тамА вот с функциями я этого не увидел..значит либо указатели,либо дин.массивы,или же глоб.константа
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2011, 23:42
Привет! Вот еще темы с ответами:

Перегрузить операторы - C++
Перегрузить операторы. Использовать спроектированые классы структур данных в соответствии с вариантом и спроектированые объекты этих...

Перегрузить операции +, +=, ==, [], () - C++
Для класса String перегрузить операции + + = == () таким образом, чтобы обеспечивалось выполнение следующих операций: ...

Перегрузить operator* - C++
Подскажите, пожалуйста, как использовать operator* в void main в данной программе по аналогии с operator-&gt; Не разобрался полностью в...

Как перегрузить *. ? - C++
И вообще как называется этот оператор? Может, я слепая, но я даже здесь не нашлаего http://ru.wikipedia.org/wiki/Операторы_в_C_и_C%2B%2B ...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
04.01.2011, 23:42
Ответ Создать тему
Опции темы

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