【问题标题】:Calling a char equivalent function with integer in c++ using Function Overloading使用函数重载在 C++ 中调用具有整数的 char 等效函数
【发布时间】:2017-01-02 13:34:20
【问题描述】:

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

#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 等效值 'A',即调用 show(char) 而不调用 show(int)

【问题讨论】:

    标签: c++ function overloading


    【解决方案1】:

    有没有可能我可以简单地调用 show(65) 来打印 ASCII 等效值 'A' 即调用 show(char) 而不调用 显示(整数)

    是的。你把它转换成char

    show(static_cast<char>(65));
    

    或使用“function-style cast”方式对其进行转换。

    show(char(65));
    

    注意:这在您的环境使用 ASCII 时有效,因为 C++ 不要求对字符进行 ASCII 编码。尽管使用不同编码的系统很少见。

    【讨论】:

    • "function-style cast" 会是你所追求的短语吗?
    • @Quentin,啊,是的。谢谢!固定。
    • show(static_cast&lt;char&gt;(65)); 这个静态转换是什么意思,什么是函数样式转换?
    • @Anjaneyulu - 评论不是介绍的地方。 Pick a good book 然后从那里出发。
    【解决方案2】:

    或者您可以尝试创建具有 char 类型的变量,然后将其传递给 Show 函数。

    例如:

    char test = 'Z';
    
    Show(test);
    

    它会起作用的!

    【讨论】:

    • 'Z'的ascii编码不是65
    • 我认为他没有收到 'Z' 的 65 输出。他在帖子末尾提到了“show(65) to print the ASCII equivalent value 'A'”
    【解决方案3】:

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

    1. 您已经有一个将数字作为参数的函数。
    2. 您必须手动将其转换为 char:show(char(65))
    3. 即使您将其转换为 char,也只有在使用 ASCII 的环境中才有效(它不是 C++ 中唯一的编码系统)。

    如果你已经知道你想要什么字符,你可以这样做:

    show('A');
    

    【讨论】:

      猜你喜欢
      • 2014-06-18
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 2010-12-31
      相关资源
      最近更新 更多