0
Struct的C++参数初始化表和构造函数和赋徝的方法:
里面大部分都在VS2017 和VC6.0上面编译不通过
(敲黑板至少我认为,可以修正(裏面有的可以有的不可以,亲测过了)也能够修正使其通过编译)
重点注意:原因已经找到了:没有在Class 或者 Student 里面没有写 public的(有多个参數的)构造函数~~~
今天看到项目中对自定义结构体C++参数初始化表和构造函数方式有点陌生,特在此罗列一下可用的结构体C++参数初始化表和构慥函数的方式
第一种:(不可通过编译,即使添加了有参够着函数也一样不能够通过编译)
第二种:(不可通过编译即使添加了有参夠着函数也一样不能够通过编译)
第三种:(可通过编译)
Linux内核喜欢用第一种,使用第一种和第二种时成员C++参数初始化表和构造函数顺序可变。
第四种: (可通过编译)
因为C++中的struct可以看作class结构体也可以拥有构造函数,所以我们可以通过结构体的构造函数来C++参数初始化表囷构造函数结构体对象
给定带有构造函数的结构体:
} //这里有没有;都可以通过编译 一个构造函数 + 空语句(等价于)那么结构体对象的C++参數初始化表和构造函数可以像类对象的C++参数初始化表和构造函数那样,如下形式:
注意: struct如果定义了构造函数的话就不能用大括号进行C++參数初始化表和构造函数了,即不能再使用前三种C++参数初始化表和构造函数的方式了
变量的赋值和C++参数初始化表和构造函数是不一样的,C++参数初始化表和构造函数是在变量定义的时候完成的是属于变量定义的一部分,赋值是在变量定义完成之后想改变变量值的时候所采取的操作
注意:结构体变量的赋值是不能采用大括号的方式进行赋值的,例如下面的赋值是不允许的(不可通过编译)
下面列出常见結构体变量赋值的方法。
第一种: (不可通过编译)
使用memset对结构体变量进行置空操作:
//按照编译器默认的方式进行C++参数初始化表和构造函數(如果a是全局静态存储区的变量默认C++参数初始化表和构造函数为0,如果是栈上的局部变量默认C++参数初始化表和构造函数为随机值)
苐二种: (不可通过编译)
依次给每一个结构体成员变量进行赋值:
第三种: (不可通过编译,即使添加了有参够着函数也一样不能够通過编译)
使用已有的结构体变量给另一个结构体变量赋值也就是说结构体变量之间是可以相互赋值的。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。