在大多数面向对象的编程语言中,类即为包含一系列函数的用户自定义类型。正如我们看到的这样,C++中的结构体就符合这样的定义。
但C++中有另外的结构也符合这一定义;说起来有点令人迷惑,这一结构就是类(class)。 在C++中,类就是变量默认为私有的结构体。举例来说,我可以把“纸牌”结构体定义改成这样。
class Card
{
int suit, rank;
public:
Card ();
Card (int s, int r);
int getRank () const { return rank; }
int getSuit () const { return suit; }
int setRank (int r) { rank = r; }
int setSuit (int s) { suit = s; }
};
我把struct改为class并去掉了private:这样的标号。除了这两处,两个定义完全一致。
事实上,任何可以写成struct的都可以写成class,只是添加删除标号而已。除了风格方面的原因,不必在二者之中进行过分取舍,不过大多数C++程序员使用class。
另外,通常把所有C++中自定义类型叫做“类(class)”,无论他们是被定义为struct或class。