gpt4 book ai didi

c++ - 此方法是否评估空字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 16:11:02 26 4
gpt4 key购买 nike

我是 C++ 的新手,如果这是一个愚蠢的问题,请多多包涵。

下面的方法似乎创建了一个名为 reversePhrase 但没有初始值的字符串,然后使用它 phrase.evalPalindrome(reversePhrase):

void testForPalindrome(string origPhrase)
{
string reversePhrase;
bool isPalindrome;
Palindrome phrase(origPhrase);


if (phrase.evalPalindrome(reversePhrase))
{
cout << "This phrase IS a palindrome!" << endl;
}
else
{
cout << "This phrase is NOT a palindrome." << endl;
}
cout << "Original phrase: " << origPhrase << endl;
cout << "Reverse phrase: " << reversePhrase << endl << endl;
}

在 Java 中,这会产生一个空指针异常。但是我分析了被调用的方法,它看起来像是接受一个字符串的地址。

bool Palindrome::evalPalindrome (string& reversePhrase)
{
// code
}

但是我不明白这是怎么回事。初始 string reversePhrase; 是否只是将内存分配给 reversePhrase?如果是,调用函数如何打印出从另一个函数修改的 reversePhrase(代码未显示,但它是从另一个函数修改的)。

以这种方式编写代码似乎很难阅读。

最佳答案

In java this would create a null pointer exception.

那是因为 Java 是一种具有不同对象创建语法的不同语言。

在 C++ 中,一旦您编写了 string reversePhrase,该对象就已完全成型并准备就绪。


But I analyzed the method that is being called and it looks like it is accepts the address of a string.

不,它接受对字符串的引用!这就是为什么调用作用域稍后可以看到修改后的字符串!

关于c++ - 此方法是否评估空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653882/

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