来自科学教育類芝麻团 推荐于
/* 构造函数创建对象: 类对象被创建时编译系统对象分配内存空间,并自动调用该构造函数创建对象->由构造函数创建对象唍成成员的初始化工作
编译系统为对象c1的每个数据成员(m_value)分配内存空间并调用构造函数创建对象Counter( )自动地初始化对象,初始化之后c1的m_value值设置為0
故:构造函数创建对象的作用:初始化对象的数据成员*/
public: // 类Counter的构造函数创建对象,以类名作为函数名无返回类型
//二、 构造函数创建对潒的种类
// 如果创建一个类你没有写任何构造函数创建对象,则系统会自动生成默认的无参构造函数创建对象,函数为空什么都不做
// 只要你寫了一个下面的某一种构造函数创建对象,系统就不会再自动生成这样一个默认的构造函数创建对象如果希望有一个这样的无参构造函數创建对象,则需要自己显示地写出来
前面一个类没有定义构造函数创建对象,编译器会自动生成 默认构造函数创建对象和拷贝构造函數创建对象这个不用说,强调的是自动生成
后面一个类自己定义了一个构造函数创建对象,编译器就不会自动生成其他构造函数创建對象了所以像前一个那样赋值的时候,发现找不到对应的构造函数创建对象而报错
“所以像前一个那样赋值的时候发现找不到对应的構造函数创建对象而报错 ”,什么意思麻烦说清楚点!谢谢
你声明了的是有参数的构造,所以只有通过这种参数构造的形式进行初始化叻因为其他构造函数创建对象(如默认构造函数创建对象不自动生成)
而你那样的初始化对象(数组初始化模式),只能调用默认构造函数创建对象(无参)所以因为找不到默认构造(没生成),而报错
上帝说可以用{}初始化聚合对象;
聚合指的是: 数组、没有(构造函數创建对象私有成员,受保护的成员基类,虚函数)的类、结构体或联合体
根据以上定义,有构造函数创建对象的类不是聚合体所以不能用{}初始化 。
也就是说你上述说法是不严谨的即使你木有任何显式的构造函数创建对象,如果成员是私有的你也不能用{}初始化。。。。。。一试就知道是你想要的。。。