zoukankan      html  css  js  c++  java
  • struct--------构造函数对结构体初始化的影响

    struct--------构造函数对结构体初始化的影响。
    没有构造函数时使用如下:
    struct ClassBook{
     int number;
     int age;
    };
    int main()
    {
     //以下两方式都对
     ClassBook bookst={1005,10};//或者ClassBook bookst;bookst.number=1001;bookst.age=10;
     cout<<bookst.number<<" "<<bookst.age<<endl;
     return 0;
    };
    添加构造函数后:
    struct ClassBook{
     int number;
     int age;
     ClassBook()
     {
      memset(this,0,sizeof(ClassBook));
     }
     
    };
    int main()
    {
     ClassBook bookst={1001,10};
     cout<<bookst.number<<" "<<bookst.age<<endl;
     return 0;
    };
    编译会报错: error C2552: “bookst”: 不能用初始值设定项列表初始化非聚合
    改成如下则不会有错。
    struct ClassBook{
     int number;
     int age;
     ClassBook()
     {
      memset(this,0,sizeof(ClassBook));
     }
     
    };
    int main()
    {
     ClassBook bookst;
     bookst.number=1001;
     bookst.age=10;
     cout<<bookst.number<<" "<<bookst.age<<endl;
     return 0;
    };
    总结:
    error C2552:不能用初始值设定项列表初始化非聚合
    如果一个结构体定义了构造函数,那么不能再在定义一个结构体变量的同时对其进行初始化.必须先定义,再初始化。如果没有构造函数则两种都行。
  • 相关阅读:
    什么是“方法”
    break与continue
    循环结构2
    循环结构1
    Switch多选择结构
    if选择结构
    Scanner方法
    Doc参数信息
    运算符号
    变量与常量
  • 原文地址:https://www.cnblogs.com/polly333/p/4498407.html
Copyright © 2011-2022 走看看