刚开始使用C++进行编码。我想了解当我想定义一个变量并以其他名称将其发布时C++类是如何工作的。

道歉,如果这个问题没有道理。我的代码来自一本著名的教科书。我没有收到任何错误消息;我只是想了解C++是如何工作的。我有一些Python经验,这个过程使我感到困惑。

#include <iostream>
#include <string> //program uses C++ standard string class
using namespace std;

// Gradebook class definition
class GradeBook
public:
    void displayMessage( string courseName )
    {
        cout << "Welcome to the Grade Book for\n" << courseName << "!"
            << endl;
    }
};

int main()
{
    string nameOfCourse;
    GradeBook myGradeBook;
    // prompt for and input course name
    cout << "Please enter the course name: " << endl;
    getline( cin, nameOfCourse );
    cout << endl;
    myGradeBook.displayMessage( nameOfCourse );
}

输出结果很好。

注意两个变量:courseNamenameOfCourse。教科书说,courseName变量在第17行变成了nameOfCourse变量,它位于:
        string nameOfCourse;

您能帮我了解这种转变是如何发生的吗?

最佳答案

如果courseName是一个引用(std::string&),那么在第17行中将courseName绑定(bind)到nameOfCourse是正确的(换句话说,在displayMessage调用期间,courseName只是nameOfCourse的另一个名称)。

但是1.被称为“引用绑定(bind)”,而不是“变量转换”,并且2.此处不是这种情况-调用nameOfCourse时,courseName被复制到displayMessage:std::string的副本构造函数用于创建nameOfCourse的副本。

变量(和/或变量名)在C++中不会“转换”(尤其是在按值调用的上下文中),因此,除非此处存在翻译/转录/一般交流问题,否则这本书是完全错误的。

关于c++ - C++字符串类如何将变量转换为另一个变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56777303/

10-11 22:38
查看更多