Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
2 / 2 / 1
Регистрация: 09.02.2011
Сообщений: 49
1

Перегрузка функций

13.03.2011, 11:43. Показов 1773. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Стало интересно из-за возможна перегрузка функций в программе на языке С++, с чем это связано, как реализовано внутри программы?
Кто подскажет?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2011, 11:43
Ответы с готовыми решениями:

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг...

Перегрузка функций. Реализация функций
Разработать функцию f(x) , которая возвращает младшую цифру натурального числа x . Вычислить с ее...

перегрузка функций.
создать перегруженную функцию, которая меняет местами цифру под номером л в числе а с цифрой под...

перегрузка функций
Создайте класс Date, который будет содержать информацию о дате (день, месяц, год). С помощью...

16
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.03.2011, 12:24 2
Функцию в языке С++ однозначно определяет ее сигнатура - это имя функции + список ее формальных параметров. Таким образом, функции с одинаковыми именами, но разными списками параметров, считаются разными.
Цитата Сообщение от DiabloRossi Посмотреть сообщение
как реализовано внутри программы?
Кто подскажет?
какой программы?
1
2 / 2 / 1
Регистрация: 09.02.2011
Сообщений: 49
13.03.2011, 12:26  [ТС] 3
Да вообще любой.)
Я был бы рад, если бы кто-нить самую простую прогу сбацал и на ее примере объяснил)
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.03.2011, 12:39 4
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
47
#include <iostream>
#include <cstring>
#include <cstdlib>
 
#define PRINT(A) std::cout << #A << ": " << (A) << std::endl
 
void swap(int&, int&);
void swap(char*, char*);
 
int main()
{
    int ia = 5, ib = 6;
    char ca[] = "foo", cb[] = "bar";
 
    std::cout << "Before swapping:" << std::endl;
    PRINT(ia);
    PRINT(ib);
    PRINT(ca);
    PRINT(cb);
 
    swap(ia, ib);
    swap(ca, cb);
    
    std::cout << "After swapping:" << std::endl;
    PRINT(ia);
    PRINT(ib);
    PRINT(ca);
    PRINT(cb);
    
    return 0;
}
 
void swap(int& a, int& b)
{
    int t = a;
    a = b;
    b = t;
}
 
void swap(char* a, char* b)
{
    static char buf[BUFSIZ];
    
    strcpy(buf, a);
    strcpy(a, b);
    strcpy(b, buf);
}
Создаем две функции (перегруженные) swap, которые обменивают значения переменных одинаковых типов (первая функция работает с числовым типом, вторая - со строковым).
2
2 / 2 / 1
Регистрация: 09.02.2011
Сообщений: 49
13.03.2011, 12:54  [ТС] 5
Так, отлично)
а можно еще на примере какого-нибудь отладчика посмотреть, где компилятор успевает смотреть список формальных параметров?
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.03.2011, 13:18 6
Цитата Сообщение от DiabloRossi Посмотреть сообщение
а можно еще на примере какого-нибудь отладчика посмотреть, где компилятор успевает смотреть список формальных параметров?
вот это вряд ли
0
2 / 2 / 1
Регистрация: 09.02.2011
Сообщений: 49
13.03.2011, 13:25  [ТС] 7
ну или хотя бы чисто теоретически объяснить)
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.03.2011, 13:37 8
Здесь есть немного теории
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
13.03.2011, 13:44 9
Лучший ответ Сообщение было отмечено как решение

Решение

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
int f()
{
  return 0;
}
 
int f(int a)
{
  return 1;
}
 
int f(int a, int b)
{
  return 2;
}
 
int f(double a)
{
  return 3;
}
 
int f(double a, int b)
{
  return 4;
}
 
int f(double a, double* b)
{
  return 5;
}
 
int main()
{
  
}
Bash
1
2
g++ -O0 5.cpp 
nm ./a.out
Bash
1
2
3
4
5
6
7
8
...
080484b2 T _Z1fd
080484e4 T _Z1fdPd
080484cb T _Z1fdi
0804849e T _Z1fi
080484a8 T _Z1fii
08048494 T _Z1fv
...
каждую перегруженную функцию компилятор декорирует в соответствии с ее параметрами, а потом выполняет подстановку
думаю не сложно соорентироваться, что откуда
4
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
13.03.2011, 20:03 10
alex_x_x, как в vs2010 посмотреть как потом перегруженные функции именуются?
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
14.03.2011, 07:22 11
LeX BB, dumpbin, входящий в toolы студии, насчет параметров не помню
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
14.03.2011, 14:02 12
Цитата Сообщение от alex_x_x Посмотреть сообщение
dumpbin
у меня русская версия
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
14.03.2011, 14:57 13
Цитата Сообщение от LeX BB Посмотреть сообщение
у меня русская версия
Я думаю, название утилиты от этого не изменится

Ищи папку bin в папке, где установлена студия (по умолчанию C:\Program Files\Microsoft Visual Studio [НОМЕР ВЕРСИИ]\VC\bin), там ищи эту утилиту.
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
14.03.2011, 15:07 14
Nameless One, не поделишься библиотечкой mspdb100.dll?
0
Nameless One
14.03.2011, 15:10
  #15

Не по теме:

LeX BB, увы...

0
LeX
14.03.2011, 15:11
  #16

Не по теме:

эх...без нее не запускается

0
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 11
14.03.2011, 17:40 17
Цитата Сообщение от Nameless One Посмотреть сообщение
Здесь есть немного теории
Спс!Благодаря єтому пояснению разобрался..
0
14.03.2011, 17:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2011, 17:40
Помогаю со студенческими работами здесь

Перегрузка функций
С помощью механизма перегрузки функций организовать ввод с клавиатуры и сцепление: 1) одной строки...

Перегрузка функций
До экзаменом чуть больше недели, а вот с такими функциями беда, никак не встряну что да как,...

Перегрузка функций
Здравствуйте уважаемые програмисты:) У меня вот такое задание: В классе необходимо перегрузить...

Перегрузка функций
Как вызвать перегрузку функции, если они отличаются только реализацией? Например: int...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru