С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
#1

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

06.04.2012, 07:25. Просмотров 418. Ответов 6
Метки нет (Все метки)

нужно в соответствии с замечанием изменить прилагаемый код : Сделать так, чтоб было видно, какая из перегруженных функций вызывалась. Напрмер функция дополнительно выводмиь строку типа "Результат вызова функции с целыми параметрами".
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2012, 07:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Информация о вызванной перегрузке функции (C++):

Ошибка при работе функции вызванной из SWITCHa - C++
Почему при выборе первого элемента SWITCHa, то есть case 1, функция Enter_Data() работает не правильно, игнорируются некоторые строки? А...

Что это за параметр в перегрузке функции? - C++
Здравствуйте, вот есть код для перегрузки оператора взятия индекса массива: #include &lt;cassert&gt; int&amp; IntArray::operator (int index) { ...

О перегрузке операторов - C++
Вот у меня есть код программы : #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class A ...

Вопрос о перегрузке ++/-- - C++
Рассмотрим простой пример постфиксной и префиксной операции инкремента: int main() { int i=0; cout&lt;&lt; i++; cout&lt;&lt; ++i; ...

Ошибка в перегрузке - C++
Заголовок #ifndef CHALLENGE_H #define CHALLENGE_H #include &lt;ostream&gt; using std::ostream; class Stringos { friend...

Ошибки в перегрузке << и >> - C++
Привет, я делаю упражнение, но у меня не выходит считывать информацию с файла. Вот код: class Employee { private: std::string...

6
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
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;
    
}
1
Joeymax
924 / 311 / 45
Регистрация: 31.03.2012
Сообщений: 823
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
1
-=ЮрА=-
Заблокирован
Автор 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;
}
1
Миниатюры
Информация о вызванной перегрузке функции  
-=ЮрА=-
Заблокирован
Автор 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:: и сказал "да будет так, так ведь правильно" и всё - поголовно теперь идёт использование данной конструкции
1
Миниатюры
Информация о вызванной перегрузке функции  
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
06.04.2012, 22:17 #6
-=ЮрА=-, холиварите? Не раз ведь уже такое обсуждалось.
0
-=ЮрА=-
06.04.2012, 22:30     Информация о вызванной перегрузке функции
  #7

Не по теме:

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

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

Ошибка в перегрузке операций - C++
Долго сижу и никак не могу понять в чём ошибка. Вот 3 файла. Они подключены правильно и работают. main.cpp #include &lt;iostream&gt; ...

Указатель в перегрузке оператора - C++
Не понимаю, зачем здесь указатель на оператор и на параметр функции? ostream &amp;operator&lt;&lt;(ostream &amp;stream, class_type obj) { return...

Ошибка в перегрузке операторов? - C++
не могу понять в чем ошибка class cMatrix { private: int rows; int columns; public:

Ошибка в перегрузке операции - C++
Здравствуйте, помогите пожалуйста исправить ошибка: выражение слева от &quot;.summa&quot; должно представлять класс, структуру или объединение ...


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

Или воспользуйтесь поиском по форуму:
7
06.04.2012, 22:30
Ответ Создать тему
Опции темы

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