C++的类为什么要加分号

来源:百度知道 编辑:UC知道 时间:2024/06/17 11:03:33
以下程序
#include<iostream>
using namespace std;
class Student
{private:
int num;
int score;
public:
void setdata()
{cin>>num;
cin>>score;
}
void display()
{
cout<<"num="<<num<<endl;
cout<<"score="<<score<<endl;
};
};
Student stud1,stud2;
int main()
{stud1.setdata();
stud2.setdata();
stud1.display();
stud2.display();
return 0;
}

为什么这段程序代码
public:
void setdata()
{cin>>num;
cin>>score;
}
void display()
{
cout<<"num="<<num<<endl;
cout<<"score="<<score<<endl;
};
};
的最后两个花括号后面都要加分号?

void display()
{
cout<<"num="<<num<<endl;
cout<<"score="<<score<<endl;
};

这段是不需要加分号的。

类的定义要以分号结束,这是 C++ 的语法。
类也是一个变量,就像你定义普通的变量一样,int a;这不过这里换成了类。是为了保证语法的严谨。

个人认为啊。

在display(){...}后面那个分号估计是随手敲上去的,反正也不错。一般情况下是不加的。
第二个分号是用来表示类定义结束。其实在一些语法类似C的语言里面,如java是可以不加的。但为什么C++就必须加呢,这追溯到C语言的关于结构定义的规定。
因为在C语言里面常常这样写:
struct S
{
} aFunction(){}
用来定义一个返回类型为结构S的函数。而且在C语言里面函数返回值为整型时,可以不写返回值。
aFunction(){}
表示定义返回整型的函数。
如果允许结构定义不加分号,这种写法就会产生歧义。可以解释为定义一个返回结构的函数,或者是定义一个结构和一个函数。这样就只能要求结构定义要加分号了。
C++为了和C语言兼容,所以沿用了这个规定。

就如同一个函数一样

函数花括号后面为什么不加分号?因为它是一个定义.函数如果在前面声明的话,就需要加分号.

类是一样的道理,在花括号外面加分号,说明它是一个声明,而不是定义.(比如你看类里面的数据成员,只能声明,能够定义吗?)

顺便提一下,你的display函数后面加分号是错误的.

简单的说,就是规定。类在定义和声明时,结尾必须加分号是C++的强制规定,如果丢失就会编译报错。

在C++中,除函数,及预编译指令外,其它的语句或代码段结尾都必须要加分号。
其中预编译指令是指,以#开头的语句。常见的有,#include ,#def