对于很多对象来说,不利用外部数据进行完全的初始化是不合理的。比如一个没有输入姓名的地址簿对象,就没有任何意义

class EquipmentPiece {
public:
EquipmentPiece(int IDNumber);
...
};

因为 EquipmentPiece 类没有一个缺省构造函数,所以在三种情况下使用它,就会遇到问题

(1) 第一中情况是建立对象数组时    ——EquipmentPiece bestPieces[10]; // 错误!没有正确调用 EquipmentPiece 构造函数

EquipmentPiece *bestPieces = new EquipmentPiece[10];//错误!没有正确调用 EquipmentPiece 构造函数

栈 解决方法:

int ID1, ID2, ID3, ..., ID10; // 存储设备 ID号的 变量 ...
EquipmentPiece bestPieces[] = { // 正确, 提供了构造
EquipmentPiece(ID1), // 函数的参数
EquipmentPiece(ID2), EquipmentPiece(ID3),...,EquipmentPiece(ID10)

};

堆数组(heap arrays)

typedef EquipmentPiece* PEP; // PEP 指针指向 一个 EquipmentPiece对象

PEP bestPieces[10]; // 正确, 没有调用构造函数
PEP *bestPieces = new PEP[10]; // 也正确

在指针数组里的每一个指针被重新赋值,以指向一个不同的 EquipmentPiece对象:
for (int i = 0; i < 10; ++i)
bestPieces[i] = new EquipmentPiece( ID Number );

过这中方法有两个缺点, 第一你必须删除数组里每个指针所指向的对象。 如果你忘了,就会发生内存泄漏。第二增加了内存分配量,因为正如你需要空间来容纳 EquipmentPiece对象一样,你也需要空间来容纳指针。

转载于:https://www.cnblogs.com/gisbeginner/archive/2012/11/13/2767562.html

类里面没有参缺省构造函数 的带来的问题相关推荐

  1. 定义一个矩形类(Rectangle),私有数据成员为矩形的长度( len)和宽度(wid),缺省构造函数置len和wid为0,有参构造函数置len和wid为对应形参的值,另外还包括求矩形周长、面积

    #include <iostream> using namespace std; class Rectangle {     private: double len,wid; //私有数据 ...

  2. C++ 学习 ::【基础篇:13】:C++ 类的基本成员函数:类类型成员的初始化与构造函数问题

    本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇.STL 篇.高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C++的三大特 ...

  3. 类和对象(中)——构造函数介绍

    目录 1. 类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 1. 类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类. 空类中并不是什么都没有,任何类在什么都不写时,编译器 ...

  4. Cpp 对象模型探索 / 编译器为对象创建缺省构造函数的条件

    零.前言 书本上常说,编译器会给没有任何构造函数的类自动创建一个缺省的构造函数(没有形参的构造函数).但是事实上不是这样么?栗子: class A { public:int i; };int main ...

  5. 【C++】类的成员初始化表与构造函数内赋值操作

    我们常常在初始化类数据成员的时候,对使用初始化表和在构造函数中十分困惑,这二者有什么区别呢?我们应该如何选择呢? 先举个简单的例子,看下面的两段代码: 代码A: inline Account::Acc ...

  6. java 继承类 变量、静态变量、构造函数执行顺序

    java 继承类 变量.静态变量.构造函数执行顺序 Java代码   class C{ static int prt(int i){ System.out.println(i); return i; ...

  7. 类的带参方法有哪几部分构成?

    类的带参方法有哪几部分构成? 发布于2015-11-08 12:27 main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数. C语言规定main函数的参数只能有两个,还规 ...

  8. 【C++】C++类的学习(二)——构造函数、析构函数、拷贝构造函数以及this指针

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 1. 前言 在之前的博文< C++类的学习(一)--初识类>中,简单地讲述了类的 ...

  9. 使用类名称创建实例并调用构造函数

    本文翻译自:Creating an instance using the class name and calling constructor Is there a way to create an ...

最新文章

  1. 17岁少年买不到回国机票就攻击航司系统,获刑四年!自称因疫情严重和女朋友怀孕压力大...
  2. 构建你的第一个Flutter视频通话应用
  3. Flask 模型操作
  4. LInux 安全测试 2
  5. Linux I/O复用之select函数详解
  6. 关于 webapi ajax进度条信息设置
  7. 里程碑!中国移动5G信号将覆盖珠峰峰顶
  8. Page Cache引起的业务问题处理
  9. Overview of HEVC之4 帧内预测
  10. 小程序 背景图 repeat_简单可爱的微信聊天背景图片
  11. hl3150cdn打印不了照片_如何在美国打印证件照片 (Passport Photos)?
  12. 在ie7中overflow:hidden失效问题及解决方案
  13. 后台job批量停用和开启
  14. 机器学习基石01:机器学习简介
  15. 数学分析 实数与函数(第1,7章)
  16. 云计算 - 虚拟化技术 - 总结
  17. 猪悟能淘宝商品下载专家v2.0 beta1.0版发布,欢迎测试!
  18. Self-Attention详解
  19. 为何农历10月1号要祭祖上坟?原来有这么多讲究,你知道吗?
  20. 汉语字典APP开发总结

热门文章

  1. Python复制数据
  2. 2010计算机知识点总结,2010年全国职称计算机考试:知识点笔记第一章
  3. 八年程序员被裁了后,打脸上家公司,连斩六个offer
  4. 鬼才!我居然把 Vue3 的原理用到了 React 上?
  5. 从事7年前端开发,有些经验想对转行学习前端的伙伴说说!
  6. 五分钟带你了解前端开发,以及前端开发的发展机会
  7. 3dmax高版本转低版本插件_Fundebug前端JavaScript插件更新至1.8.0,兼容低版本的Android浏览器...
  8. ajax live search,AJAX Live Search
  9. html page背景图片,html – Fullpage.js背景图片
  10. ajax跨域获取数据后处理,简单实现ajax获取跨域数据