首页 > 编程语言 >C++编译错误:ISO C++ forbids initialization of member `x'

C++编译错误:ISO C++ forbids initialization of member `x'

时间:2022-12-17 10:00:42浏览次数:44  
标签:初始化 initialization C++ member ISO c++ 成员 构造函数

 

在C-Free中编译简单的C++代码,发现报以上错误:ISO C++ forbids initialization of member `x'(ISO C++禁止初始化成员变量‘x’),经查阅资料:

c++类基于C语言的结构体(struct),并添加了许多特性。C语言的结构体成员不能有初始化赋值(因为每次创建结构类型的对象时都需要执行代码,这对于早期的C编译器来说太复杂了)。

早期的c++(最初称为“C with Classes”)添加了构造函数,这种机制要求在每次创建给定类型的对象时执行代码。由于构造函数可以实现成员变量的初始化,因此成员变量初始化式不是必要的。

但是,有成员变量初始化会更方便,即使它不是严格必要的。新的2011年ISO c++标准已经在语言中添加了这个功能,所以显然ISO c++委员会认为这是一个好主意。这个特性增加了语言的复杂性(例如,必须有新的规则来控制初始化器和构造函数的执行顺序,而依赖于该顺序的代码可能会令人困惑)。委员会认为为了方便,增加一些复杂性是值得的。

也就是说在C++11之前是不支持成员变量初始化的,从C++11开始引入了该功能,因为它是在编写多个构造函数时保证默认值一致性的最简单方法,但不是必须的,视具体情况而定。

标签:初始化,initialization,C++,member,ISO,c++,成员,构造函数
From: https://www.cnblogs.com/chanyuantiandao/p/16988634.html

相关文章

  • 整理的 英文 c/c++ 编程 wiki
    不断更新中。。。 allwikis ​​http://wiki.linuxquestions.org/wiki/C/C%2B%2B_Tutorials​​C++/C,国外一个开发者自己收集的站点​​http://www.shokhirev.com/nik......
  • c c++函数指针 Tutorials
    ​​http://www.newty.de/fpt/index.html​​Callbacks,functionpointersTheFunctionPointerTutorialsbyLarsHaendel:​​http://www.newty.de/fpt/index.html​......
  • C++的四种强制转换
    reinterpret_cast使用形式:reinterpret_cast<type-id>(expression)type-id必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以用于类型之间进行强制转换(不可......
  • C/C++大数据行程码识别系统
    C/C++大数据行程码识别系统大数据行程码识别系统一、编程题(60分)大数据行程码是疫情防控的主要手段,请用C语言设计简单的大数据行程码识别系统具体功能描述:1、建......
  • k倍区间【第八届蓝桥杯省赛C++B组,第八届蓝桥杯省赛JAVAB组】
    k倍区间给定一个长度为\(N\)的数列,\(A1,A2,…AN\),如果其中一段连续的子序列\(Ai,Ai+1,…Aj\)之和是\(K\)的倍数,我们就称这个区间\([i,j]\)是\(K\)倍区间。你能......
  • [c++实践]02-异常处理
    总结:在c++编程中,不建议使用异常。因为c++标准没有定义异常的实现方式,并且异常也不可以跨线程。构造函数异常构造函数可以抛出异常,此时对象还没有完全构造完成,对象的生命周期......
  • C++函数基础篇解析
    ......
  • C++小型公司人员信息管理系统(多态)
    C++小型公司人员信息管理系统(多态)1.实验题目及要求已有应用为:某公司包含多种员工类型:技术员,产品经理,销售员、销售经理。技术员(包含工号(6位:000001999999)、姓名、电话......
  • C++_基于例子进行学习
    1.C++examplelearningfirstexample--》1.include#include指令:头文件包含指令。预处理阶段,#include会将头文件拷贝到本文件内进行运行<string.h>是旧的C头文件,对......
  • 四平方和【第七届蓝桥杯省赛C++A/B组,第七届蓝桥杯省赛JAVAB/C组】
    四平方和四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:\(5=0^2+0^2+1^2......