CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

构造函数的问题

楼主superwt2001(嘿嘿)2003-01-03 23:26:39 在 C/C++ / C语言 提问

举一例说明,定义一个类时,在某些情况下一定要保证它要有个不带参数或提供了全部缺省参数值的构造函数。 问题点数:0、回复次数:9Top

1 楼widewave(冯雨(历史事实))回复于 2003-01-04 00:07:45 得分 0

参考STL。Top

2 楼sea_lover(CodePlus)回复于 2003-01-04 00:25:42 得分 0

请参看《More   Effective   C++》Item   M4条款:避免无用的缺省构造函数。  
          缺省构造函数(指没有参数的构造函   数)在C++语言中是一种让人无中生有的方法。构造函数能初始化对象,而缺省构造函数则可以不利用任何在建立对象时的外部数据就初始化对象。有时这样的方法是不错的,例如一些行为特性与数字相仿的对象被初始化为空值或不确定的值也是合理的,还有比如链表、哈希表、图等等数据结构出可以被初始化为空容器。但不是所有的对象都属于上述类型,对于很多对象来说,不利用外部数据进行完全的初始化是不合理的。比如一个没有输入姓名的地址薄对象,就没有任何意义。在一些公司里,所有的设备都必须标有一个公司ID号码,所以在建立对象以模型化一个设备时,不提供一个合适的ID号码,所建立的对象就根本没有意义。Top

3 楼sea_lover(CodePlus)回复于 2003-01-04 00:26:08 得分 0

请参看《More   Effective   C++》Item   M4条款:避免无用的缺省构造函数。  
          缺省构造函数(指没有参数的构造函   数)在C++语言中是一种让人无中生有的方法。构造函数能初始化对象,而缺省构造函数则可以不利用任何在建立对象时的外部数据就初始化对象。有时这样的方法是不错的,例如一些行为特性与数字相仿的对象被初始化为空值或不确定的值也是合理的,还有比如链表、哈希表、图等等数据结构出可以被初始化为空容器。但不是所有的对象都属于上述类型,对于很多对象来说,不利用外部数据进行完全的初始化是不合理的。比如一个没有输入姓名的地址薄对象,就没有任何意义。在一些公司里,所有的设备都必须标有一个公司ID号码,所以在建立对象以模型化一个设备时,不提供一个合适的ID号码,所建立的对象就根本没有意义。  
   
   
   
   
   
   
   
   
  -----------------------------------------------------------  
  【◇SeaLover◆〗  
      /                     \  
    ★---CSDN---☆  
   \                     /  
  【○Trust   Me●〗  
  Top

4 楼Firstbyte(尘飞扬)回复于 2003-01-05 08:51:06 得分 0

比如说  
  Account   *   pt=new   Account[10];  
  就要有缺省构造函数.  
  或   定义  
  Account   account;  
  的时候.    
  Top

5 楼shooper(东东)回复于 2003-01-05 09:51:47 得分 0

在类定义时没有定义任何构造函数时,编译器自动生成一个不带参数的缺省构造函数。所以说,对任何对象都是要用构造函数来初始化的。Top

6 楼tianzhhy(天之痕)回复于 2003-01-05 10:38:27 得分 0

如果你搞清楚构造函数的作用,也许你的问题就会解决了。  
  每一个对象是类的一个实例,在对象定义时必须初始化,因此构造函数是比不可少的。至于是否要带参数,要看实际情况。看看楼上的同学举的例子。Top

7 楼cjnet(孤星剑)回复于 2003-01-05 18:11:17 得分 0

这是为了防止编译程序时出错。Top

8 楼jiangpeng(Mr. J)回复于 2003-01-05 20:07:30 得分 0

当你要定义一个对象集合的时候,必须有缺省构造函数。如:  
  struct   A  
  {  
          A()   :   m_i(0)   {}  
          int   m_i;  
  }  
   
  A   a[10];  
   
  如果没有缺省构造函数是不行的Top

9 楼jiangpeng(Mr. J)回复于 2003-01-05 20:23:34 得分 0

不好意思例子用错了:(  
  struct   A  
  {  
          //A()   :   m_i(0)   {}  
          A(int   i)   :   m_i(i)   {}  
          int   m_i;  
  }  
   
  A   a[10];   //如果不定义A::A()是不行的  
   
  详情请看<<C++   沉思录>>   P39  
  Top

相关问题

  • 构造函数
  • 构造函数
  • 构造函数??
  • 构造函数
  • 函数构造
  • @@@@@@ 构造函数 @@@@@
  • WebService构造函数
  • 构造函数和析构函数
  • 构造函数是内联函数吗?
  • 构造函数与析构函数

关键词

  • c++
  • c++语言
  • 函数
  • 数据
  • 初始化
  • 构造
  • 对象
  • 缺省构造
  • 定义
  • 参数

得分解答快速导航

  • 帖主:superwt2001

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo