class作为C++中组织数据的基本类型。C++赋予class强大的组织能力,可以包含数据成员和方法。使用public, protected, private 进行访问控制;class之间可以通过继承来复用代码;通过virtual 修饰函数和继承来实现多态。C++的面向对象功能离不开class,但C++为了兼容C代码,还是保留了struct关键字。struct与class唯一的区别是:成员访问控制。class默认是private,而struct默认是public。下面看一个例子:
struct num_s {
int m_a;
private:
int m_b;
};
class num_c {
int m_b;
public:
int m_a;
};
上面的例子中,通过struct 和 class 分别定义了两个类,它们的访问控制权限是一样的。
在C中还有一个和数据组织有关的关键字union,那在C++中union又是怎样的呢?
union是为了节省内存设计的特殊类,各个成员间共享同同一片内存。- 默认的访问控制权限是
public。 - 可以包含
构造和析构函数。 - 不能包含引用成员,不能包含虚函数,不能继承与被继承。
- 匿名
union可通过外部直接访问。