struct

定义

  1. struct person
  2. {
  3. std::string name{"Haymax"};
  4. int age=18;
  5. };
  6. //也可以声明没有名字的结构体类型,直接构建一个这种类型的变量
  7. struct
  8. {
  9. std::string name{"Haymax"};
  10. int age=18;
  11. } candidate0;
  12. //结构体也有构造函数和析构函数
  13. struct Node{
  14. int value;
  15. Node *next;
  16. Node *father;
  17. // 构造函数,构造node的时候被调用,大括号不能省略
  18. Node():value(1), next(nullptr), father(nullptr){};
  19. // 默认构造函数和构造函数重载;
  20. Node(int v, Node *next_){
  21. std::cout<<"v is "<<v<<std::endl;
  22. value = v;
  23. father = new Node;
  24. next = next_;
  25. };
  26. ~Node(){
  27. std::cout<<"deleting"<<std::endl;
  28. delete father;
  29. };
  30. };

声明

  1. person candidate0 = {"Haymax", 18};

结构体也可以使用相应的列表初始化的方式来初始化。

enum

定义

  1. enum pets {cat, dog, bird, fish};
  2. enum pets {cat, dog, bird=5, fish}; //fish会接着向后数,在这里就是6

使用

  1. pets my_pet;

!注意,枚举类型可以在自动类型转换的过程中转换成int,但是不能直接当int用。