结构体与对象聚合

结构体:对基本数据结构进行扩展,将多个对象放置在一起视为一个整体

  • 结构体的声明与定义
  • 仅有声明的结构体是不完全类型(incomplete type) ```cpp struct str1;

int main() { str1* my_str{}; //str1 my_str{};如果这样写,编译器会报错:Variable has incomplete type ‘str1’ }

  1. - 结构体(以及类)的**一处定义**原则:翻译单元级别
  2. 数据成员(数据域)的声明与初始化
  3. - C++11以后,数据成员可以使用**decltype**来声明其类型,但不能使用auto
  4. - 数据成员声明时可以引入**const、引用**等限定
  5. - **数据成员会在构造类对象时定义
  6. **
  7. - C++11)类内成员初始化
  8. - 聚合初始化:从初始化列表到**指派初始化**器
  9. mutable
  10. ```cpp
  11. #include <iostream>
  12. struct Str
  13. {
  14. mutable int x = 0;
  15. };
  16. int main()
  17. {
  18. const Str m_str{};
  19. m_str.x = 3;
  20. std::cout << m_str.x << std::endl;
  21. }

静态数据成员——多个对象之间共享的数据成员

  • 定义方式的衍化
  • 可以使用auto自动类型推导

成员函数(方法)

访问限定符与友元

构造、析构与复制成员函数






字面值类,成员指针与bind交互