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

Информация о вызванной перегрузке функции - C++

Восстановить пароль Регистрация
 
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
06.04.2012, 07:25     Информация о вызванной перегрузке функции #1
нужно в соответствии с замечанием изменить прилагаемый код : Сделать так, чтоб было видно, какая из перегруженных функций вызывалась. Напрмер функция дополнительно выводмиь строку типа "Результат вызова функции с целыми параметрами".
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
#include <stdio.h>
 
int isNegative(int    val);
int isNegative(double val);
 
int main()
{
    int a    = 0;
    double b = 0;
    while(1)
    {
        printf("Vvedite celoe chislo    : ");scanf("%d",&a);
        printf("Vvedite veshestv chislo : ");scanf("%lf",&b);
        printf("Chislo a = %d\n",a);
        if(isNegative(a))
            printf(" otricatelnoe\n");
        else
            printf(" polozhitelnoe\n");
        printf("Chislo b = %lf\n",b);
        if(isNegative(b))
            printf(" otricatelnoe\n");
        else
            printf(" polozhitelnoe\n");
    }
    return 0;
}
 
int isNegative(int val)
{
    int flag = 0;
    if(val < 0)
        flag = 1;
    return flag;
}
 
int isNegative(double val)
{
    int flag = 0;
    if(val < 0)
        flag = 1;
    return flag;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2012, 07:25     Информация о вызванной перегрузке функции
Посмотрите здесь:

Ошибка при перегрузке + C++
Вопрос о перегрузке ++/-- C++
Ошибка при работе функции вызванной из SWITCHa C++
О перегрузке операторов C++
C++ Ошибка в перегрузке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
06.04.2012, 07:54     Информация о вызванной перегрузке функции #2
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
#include <iostream>
 
int isNegative(int    val);
int isNegative(double val);
 
int main()
{
    int a    = 0;
    double b = 0;
    while(1)
    {
        std::cout<<"Vvedite celoe chislo    : ";std::cin>>a;
        std::cout<<"Vvedite veshestv chislo : ";std::cin>>b;
        std::cout<<"Chislo a = "<<a<<"\n";
        if(isNegative(a))
            std::cout<<" otricatelnoe\n";
        else
            std::cout<<" polozhitelnoe\n";
        
        std::cout<<"Chislo b = "<<b<<"\n";
                
        if(isNegative(b))
            std::cout<<" otricatelnoe\n";
        else
            std::cout<<" polozhitelnoe\n";
    }
    return 0;
}
 
int isNegative(int val)
{
    std::cout<<"(value is int)";            
    return (val < 0)?1:0;
        
}
 
int isNegative(double val)
{
    std::cout<<"(value is double)";
    return  (val < 0)?1:0;
    
}
Joeymax
883 / 278 / 39
Регистрация: 31.03.2012
Сообщений: 743
06.04.2012, 08:19     Информация о вызванной перегрузке функции #3
Не разу не слышал о перегрузке функций в C, может немножко отстал от жизни
а вот пример для C++:
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
#include <iostream>
int a(int i);
double a(double d);
long a(long l);
 
int main() {
    std::cout << a(10);
    std::cout << a(10.0);
    std::cout << a(10L);
    return 0;
}
int a(int i){
    std::cout << "Вызвана с параметром - int\n";
    return i;
}
 
double a(double d) {
    std::cout << "Вызвана с параметром - double\n";
    return d;
}
long a(long l) {
    std::cout << "Вызвана с параметром - long\n";
    return l;
}
Добавлено через 16 минут
Немножко опоздал, уже подсказал nxnx
-=ЮрА=-
Заблокирован
Автор FAQ
06.04.2012, 21:52     Информация о вызванной перегрузке функции #4
Цитата Сообщение от jeka061288 Посмотреть сообщение
нужно в соответствии с замечанием изменить прилагаемый код : Сделать так, чтоб было видно, какая из перегруженных функций вызывалась. Напрмер функция дополнительно выводмиь строку типа "Результат вызова функции с целыми параметрами"
Сразу отмечу что перегрузка как таковая присуща С++ в Си её нет. Ниже мой взгляд на проблему
C++ (Qt)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
using namespace std;
 
//Прототипы перегруженных функций
bool isNegative(int    val);
bool isNegative(long   val);
bool isNegative(double val);
 
int main()
{
    int    i_val;
    long   l_val;
    double d_val;
 
    cout<<"Vvedite int    : ";cin>>i_val;
    cout<<"Vvedite long   : ";cin>>l_val;
    cout<<"Vvedite double : ";cin>>d_val;
    cout<<"Chislo : "
        <<i_val
        <<" : "
        <<(isNegative(i_val) ? "otricatelnoe" : "polozhitelnoe")
        <<endl;
    cout<<"Chislo : "
        <<l_val
        <<" : "
        <<(isNegative(l_val) ? "otricatelnoe" : "polozhitelnoe")
        <<endl;
    cout<<"Chislo : "
        <<d_val
        <<" : "
        <<(isNegative(d_val) ? "otricatelnoe" : "polozhitelnoe")
        <<endl;
    system("pause");
    return 0;
}
 
bool isNegative(int    val)
{
    bool bFlag = false;
    if(val < 0)
        bFlag = true;
    cout<<"\nResultat funkcii s parametrom int : "
        <<(bFlag ? "otricatelnoe" : "polozhitelnoe")
        <<endl;
    return bFlag;
}
 
bool isNegative(long   val)
{
    bool bFlag = false;
    if(val < 0)
        bFlag = true;
    cout<<"Resultat funkcii s parametrom long : "
        <<(bFlag ? "otricatelnoe" : "polozhitelnoe")
        <<endl;
    return bFlag;
}
 
bool isNegative(double  val)
{
    bool bFlag = false;
    if(val < 0)
        bFlag = true;
    cout<<"Resultat funkcii s parametrom double : " 
        <<(bFlag ? "otricatelnoe" : "polozhitelnoe")
        <<endl;
    return bFlag;
}
Миниатюры
Информация о вызванной перегрузке функции  
-=ЮрА=-
Заблокирован
Автор FAQ
06.04.2012, 22:10     Информация о вызванной перегрузке функции #5
А теперь хотел бы обратить внимание всех ответчиков на код ниже
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
namespace my
{
    template <class T>
    T cout(T param)
    {
        return param;
    }
}
using namespace std;
 
int main()
{
    cout<<"Test\n";
    cout<<my::cout("Test\n");
    system("pause");
    return 0;
}
Вывод напрашивается сам собой - накой чёрт везде лепить std:: если даже без явного указания области видимости ничего страшного не произойдёт даже при использовании другого namespace-а
Код с двоеточиями, нечитабелен, абсолютно такой же по функционалу что и код без std::. И ещё один момент - кто нибудь в MSDN-е встречал код с std:: именно официальный код???Ну хорошо из 100 кодов возможно пара содержит std::, остальная же часть кода дана с using namespace std; как такая которая позволяет сокращать код (прелагаю посчитать на сколько символов увеличивает std:: в каждой строчке длинну кода).
Реально как инкубатор: кто-то написал std:: и сказал "да будет так, так ведь правильно" и всё - поголовно теперь идёт использование данной конструкции
Миниатюры
Информация о вызванной перегрузке функции  
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
06.04.2012, 22:17     Информация о вызванной перегрузке функции #6
-=ЮрА=-, холиварите? Не раз ведь уже такое обсуждалось.
-=ЮрА=-
06.04.2012, 22:30     Информация о вызванной перегрузке функции
  #7

Не по теме:

soon, с кем я холиворю?
Если есть желание что-то обсудить то сюда
http://www.cyberforum.ru/blogs/34326/blog275.html

Yandex
Объявления
06.04.2012, 22:30     Информация о вызванной перегрузке функции
Ответ Создать тему
Опции темы

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