关于C++中的范围解析运算符的问题?

ipk*_*iss 1 c++ resolution operators

我正在学习C++,并且不太了解Scope Resolution Operator.假设我有以下代码:代码1:

class Student {
     int no;
     int semester;
     char grade[M+1];
 public:
     void display() const;
 };

 void Student::display() const {
     cout << "Hi!" << endl;
 }
Run Code Online (Sandbox Code Playgroud)

代码2:

class Student {
     int no;
     int semester;
     char grade[M+1];
 public:
     void display() const{
        cout << "Hi!" << endl;
    }
 };
Run Code Online (Sandbox Code Playgroud)

如果我在其类中定义display(),有什么区别吗?如果没有区别,那我为什么要使用范围解析运算符?

小智 6

有一个区别 - 如果在类中定义,则函数的行为就像声明为inline.但这没什么大不了的,编译器可能会忽略它.最大的区别在于,对于大型多文件项目,如果对标头中定义的函数体进行更改,则必须重新编译使用标头的其他任何文件.然而,如果对.cpp文件中定义的函数体进行更改,则只需要重新编译该文件.这可以而且确实对现实世界的项目产生巨大影响.