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

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. 深度强化学习实战:Tensorflow实现DDPG - PaperWeekly 第48期
  2. java对cpu线程的要求_java-CPU份额对线程有什么影响
  3. Qt工作笔记-QTreeWidgetItem中type的基本用法
  4. 俩层判断,判断button是否可以点击
  5. C语言常用的库函数 (自用)
  6. iOS视频播放的横屏与竖屏的处理
  7. (WIP)Start my first kernel journey (by quqi99)
  8. guacamole开发者文档——数据库认证
  9. 针对云主机卡死问题的定位分析方法
  10. ios: Undefined symbols
  11. 如何用excel做正交分析_利用Excel进行正交设计及分析.pdf
  12. MATLAB plot函数绘制二维曲线
  13. HTML简单练习——个人名片
  14. indexedDB介绍
  15. vue 微信登录(前后台详细教程)
  16. java计算机毕业设计珠宝首饰进销存管理系统源码+数据库+系统+lw文档
  17. 玩一回没有“蒋氏”的溪口
  18. 滑板底盘能否“跑起来”?一文读懂滑板底盘
  19. 五月天 《倔强》 - 歌词
  20. 软件测试(linux命令篇-01文件操作命令)

热门文章

  1. linux 快组描述符,Linux 进程描述符 task struct
  2. 什么网了解c语言,什么是c语言?
  3. graphics | 基础绘图系统(三)——添加文本标注、坐标轴线和图例
  4. 顺序表中有效元素的长度_图解线性表,启动数据结构的大门,深刻理解链式存储和顺序存储!...
  5. html图像排列代码,HTML图像(示例代码)
  6. 为什么前端工程师薪资越来越高?
  7. 数据库,部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别
  8. 两轮差速机器人舵机转轴示意图_灵活、快捷的机房巡检机器人少不了伺服电动轮...
  9. 灰度重采样的方法分为_DSA医疗影像增强技术特点及方法
  10. python 微信机器人教程_Python实现微信机器人的方法