来源:
互联网
作者:
rocket
2008-03-18/10:53
C++之父Bjarn Stroustrup对C++语言概括的第一条就是"a better C"。struct这个关键字就来源于C。而在C++中,struct的含义已经和C中的struct不尽相同了。在C++中,用户定义类型,也就是class,拥有和内建类型一样的地位。这可以从C++中struct定义的类型在声明变量时不必再写出struct关键字看出。如
struct Foo {
// ...
};
Foo f;
在C++程序中,人们似乎更热衷于使用class,而几乎忽略了struct的存在。实际上,struct就是成员默认为public的class(在class中,成员默认为private)。事实上以下两端代码完全等价:
代码一:
struct Foo {
// ...
};
代码二:
class Foo {
public:
// ...
};
那么为什么要有struct的存在呢?首先的原因自然是保持对C的兼容。原先的C代码可以不必修改就成为合法的C++代码。第二个原因(个人愚见),是为了让struct来表示抽象的数据类型以及抽象接口,而与class所表示的类的概念相区别。
struct在C中的使用方式转移到C++以后仍然是非常重要,作为一组相关的数据而存在于一个struct,说明了他们在逻辑上是相互关联的数据,同时他们被保存在struct里而不是全局变量,也是对数据的一种管理。个人认为一种很朴素的用法要取代当前很热门的get-set用法。比如
class Foo {
int bar;
public:
int get_bar() { return bar; }
void set_bar(const int& b) { bar = b; }
};