gpt4 book ai didi

c++ - 如果我传递的只是一个字符,我应该传递一个常量引用吗?

转载 作者:行者123 更新时间:2023-11-28 06:52:55 26 4
gpt4 key购买 nike

<分区>

据我了解,这样做:

bool isLetter(char c)
{
return c >= 'a' && c <= 'z';
}

int main()
{
char mychar = 'j';
std::cout << isLetter(j);
return 0;
}

等同于:

int main()
{
char mychar = 'j';
// ---- function procedure ----
char temp1 = mychar;
bool temp2 = temp1 >= 'a' && temp1 <= 'z';
// -----------------------------
bool mybool = temp2;
std::cout << mybool;
return 0;
}

由于c的值(value)内部未修改 isLetter , 我可以通过“传入常量引用” 来缩短程序。 const前缀对程序没有影响;这只是编译器和我之间的协议(protocol)。引用前缀 &是重要的部分,因为它意味着函数将使用实际变量 c而不是拷贝 temp1

因此,

bool isLetter(const char & c)
{
return c >= 'a' && c <= 'z';
}

int main()
{
char mychar = 'j';
std::cout << isLetter(j);
return 0;
}

相当于

int main()
{
char mychar = 'j';
// ---- function procedure ----
bool temp = mychar >= 'a' && mychar <= 'z';
// -----------------------------
bool mybool = temp;
std::cout << mybool;
return 0;
}

嗯,这是我的理解。

几个问题:

  • 我的理解正确吗?如果不是,你能纠正我的做法吗?
  • 正在使用 c >= 'a' && c <= 'z'安全还是不好的做法,因为可能存在某些系统,其 ASCII 值未按通常方式排序??
  • 我的主要问题:当函数是一个如此微不足道的过程时,传递常量引用有什么意义吗???C++ 程序员会费心这样做吗?
  • 我能否——如果可以,我将如何——更改 is 函数以使其返回引用?

谢谢。我正在尝试复习 C++ 原则,因为我即将进行工作面试。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com