Я новичок в 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
, которая была изменена из другой функции (код не отображается, но он изменен из другой функции).
Кажется, что писать код таким образом трудно читать.
'String reversePhase = new String();' в Java равно 'string * reversePhase = new string();' в C++. В Java, 'reversePhase' в этом случае является указателем, поэтому вы получаете исключение, если вы ему ничего не присваиваете. – farukdgn