C++笔记 - class && struct && union

314 阅读1分钟

class作为C++中组织数据的基本类型。C++赋予class强大的组织能力,可以包含数据成员方法。使用public, protected, private 进行访问控制;class之间可以通过继承来复用代码;通过virtual 修饰函数和继承来实现多态。C++的面向对象功能离不开class,但C++为了兼容C代码,还是保留了struct关键字。structclass唯一的区别是:成员访问控制。class默认是private,而struct默认是public。下面看一个例子:

struct num_s {
    int m_a;

  private:
    int m_b;
};

class num_c {
    int m_b;

  public:
    int m_a;
};

上面的例子中,通过structclass 分别定义了两个类,它们的访问控制权限是一样的。


在C中还有一个和数据组织有关的关键字union,那在C++中union又是怎样的呢?

  • union是为了节省内存设计的特殊类,各个成员间共享同同一片内存。
  • 默认的访问控制权限是public
  • 可以包含构造析构函数。
  • 不能包含引用成员,不能包含虚函数,不能继承与被继承。
  • 匿名union可通过外部直接访问。