/*---------------------------------------------------------
定义了函数 f(char), g(char&),h(const char&) 之后,用参数 'a',49,
3300,c,uc,sc 作为参数调用它们,其中 c 是 char, sc是signed char,
uc是unsigned char。哪些调用是合法的?哪些调用将导致编译器引进临时变量。
-------------------------------------------------------*/
#include <iostream>
using std::cout;
using std::endl;
bool f(char fc) // 可传递常量与非常量
{
char fc1 = fc;
return true;
}
bool g(char& gc) // 只传递非常量
{
char& gc1 = gc;
return true;
}
bool h(const char& hc) // 只传递常量
{
const char& hc1 = hc;
return true;
}
int main()
{
char c = 'a';
unsigned char uc = 'A';
signed char sc = -51;
f('a');
// g('a'); // 非常量引用的初始值必须为左值
h('a');
f(49);
// g(49); // 非常量引用的初始值必须为左值
h(49);
f(3300); // 正常:从“int”到“char”截断
// g(3300); // 非常量引用的初始值必须为左值
h(3300);
f(c);
g(c);
h(c);
f(uc);
// g(uc); // 不能将参数 1 从“unsigned char”转换为“char &”
h(uc);
f(sc);
// g(sc); // 不能将参数 1 从“signed char”转换为“char &”
h(sc);
return 0;
}
《C++程序设计语言》5.9_6 参数调用
最新推荐文章于 2025-08-13 19:57:41 发布