使用函数重载在c ++中调用带有整数的char等效函数

时间:2017-01-02 13:34:20

标签: c++ function overloading

我正在重载一个函数,它只打印它作为参数接收的值。这是代码

#include<iostream>
using namespace std;
void show(int c)
{
    cout<<"Int C : "<<c<<endl;
}
void show(char c)
{
    cout<<"char C : "<<c<<endl;
}
void show(float c)
{
    cout<<"Float C : "<<c<<endl;
}
void show(string c)
{
    cout<<"String C : "<<c<<endl;
}
void show(const char* c)
{
    cout<<"char *C : "<<c<<endl;
}
main()
{
    string s("Vector");
    show(25);
    show('Z');
    show("C++");
    show("Hello");
    show(4.9f);
    show(s);
}

这里show(65)调用整数函数。

我是否可以简单地调用show(65)来打印ASCII等效值&#39; A&#39;即调用show(char)而不调用show(int)

3 个答案:

答案 0 :(得分:4)

  

有没有可能我只需要调用show(65)来打印   ASCII等效值'A',即调用show(char)而不调用   显示(INT)

是。您将其转换为show(static_cast<char>(65));

show(char(65));

或使用“ function-style cast ”方式转换它。

<div class="fig-container">
    <figure class="captioned-figure">
        <img class="full-width" src="..."/>
        <figcaption>
            TEXT TEXT TEXT
        </figcaption>
    </figure>
</div>

注意:如果您的环境使用ASCII,这将仅 ,因为C ++不要求对字符进行ASCII编码。虽然使用不同编码的系统很少见。

答案 1 :(得分:1)

或者您可以尝试使用char类型创建变量,并且可以将其传递给Show函数。

前:

char test = 'Z';

Show(test);

它会起作用!

答案 2 :(得分:0)

不,它不会起作用,因为:

  1. 您已经有一个以数字作为参数的函数。
  2. 您必须手动将其转换为char:show(char(65))
  3. 即使您将其转换为char,它也只会在您使用ASCII的环境中运行(它不是C ++中唯一的编码系统)。
  4. 如果你已经知道你想要什么样的字符,你可以这样做:

    show('A');