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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
DiabloRossi
2 / 2 / 0
Регистрация: 09.02.2011
Сообщений: 49
#1

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

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

Стало интересно из-за возможна перегрузка функций в программе на языке С++, с чем это связано, как реализовано внутри программы?
Кто подскажет?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2011, 11:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка функций (C++):

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

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

Перегрузка функций - C++
Моя последняя лаба=( Светлые умы, помогите... Выполнить задания пятой и шестой лабораторной работы, оформив каждый пункт задания в виде...

Перегрузка функций - C++
АТД - множество с элементами типа int. Дополнительно перегрузить следующие операции: «+» - добавить элемент в множество(типа int +...

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

Перегрузка функций - C++
Для одномерного массива из n вещественных элементов и од*номерного массива из n строк, найти соответственно: 1.1. Максимальный по модулю...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
13.03.2011, 12:24 #2
Функцию в языке С++ однозначно определяет ее сигнатура - это имя функции + список ее формальных параметров. Таким образом, функции с одинаковыми именами, но разными списками параметров, считаются разными.
Цитата Сообщение от DiabloRossi Посмотреть сообщение
как реализовано внутри программы?
Кто подскажет?
какой программы?
DiabloRossi
2 / 2 / 0
Регистрация: 09.02.2011
Сообщений: 49
13.03.2011, 12:26  [ТС] #3
Да вообще любой.)
Я был бы рад, если бы кто-нить самую простую прогу сбацал и на ее примере объяснил)
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
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, которые обменивают значения переменных одинаковых типов (первая функция работает с числовым типом, вторая - со строковым).
DiabloRossi
2 / 2 / 0
Регистрация: 09.02.2011
Сообщений: 49
13.03.2011, 12:54  [ТС] #5
Так, отлично)
а можно еще на примере какого-нибудь отладчика посмотреть, где компилятор успевает смотреть список формальных параметров?
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
13.03.2011, 13:18 #6
Цитата Сообщение от DiabloRossi Посмотреть сообщение
а можно еще на примере какого-нибудь отладчика посмотреть, где компилятор успевает смотреть список формальных параметров?
вот это вряд ли
DiabloRossi
2 / 2 / 0
Регистрация: 09.02.2011
Сообщений: 49
13.03.2011, 13:25  [ТС] #7
ну или хотя бы чисто теоретически объяснить)
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
13.03.2011, 13:37 #8
Здесь есть немного теории
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 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
...
каждую перегруженную функцию компилятор декорирует в соответствии с ее параметрами, а потом выполняет подстановку
думаю не сложно соорентироваться, что откуда
LeX
252 / 252 / 64
Регистрация: 30.06.2010
Сообщений: 956
13.03.2011, 20:03 #10
alex_x_x, как в vs2010 посмотреть как потом перегруженные функции именуются?
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
14.03.2011, 07:22 #11
LeX BB, dumpbin, входящий в toolы студии, насчет параметров не помню
LeX
252 / 252 / 64
Регистрация: 30.06.2010
Сообщений: 956
14.03.2011, 14:02 #12
Цитата Сообщение от alex_x_x Посмотреть сообщение
dumpbin
у меня русская версия
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
14.03.2011, 14:57 #13
Цитата Сообщение от LeX BB Посмотреть сообщение
у меня русская версия
Я думаю, название утилиты от этого не изменится

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

Не по теме:

LeX BB, увы...

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2011, 15:10
Привет! Вот еще темы с ответами:

перегрузка функций - C++
У меня есть структура Студенты. в ней есть Имя студента, его Бал аттестата и Возраст. Подскажите, плиз, как создать функцию add(); и...

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

Перегрузка функций - C++
разработайте две версии функции F,заголовки которых выглядят следующим образом: 1) float F(float х); 2) void F (float x, float &amp;y); ...

Перегрузка функций - C++
Добрый вечер) очень нужна помощь нужно решить задачу, все решила, кроме одного пункта. создать класс окружность (okr) ....


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

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

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