动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   程序开发 → 阅读文章

 C++基础:初始化类对象

作者来源: 
阅读 数 541 人次 , 2006-5-10 16:55:00 

问题:
       C++中如何初始化类中的表数据?在C语言中,我能像下面这样初始化结构数组: 





//
struct MYSTRUCT {
    int x,y,z;
};

MYSTRUCT table[] = {
    { 1,2,3 },
    { 4,5,6 },
    ... // etc
};
//



 
但是如果MYSTRUCT是个C++类,而不是结构,我编译就会出错。我觉得这是C++的一个不足。

解答:

    这个问题完全取决于你如何看待C++。C++的一个优点之一便是它强制你做正确的事情。例如,C++不喜欢创建对象时不调用构造函数。这只就是为什么你不能用原始数据初始化类对象的原因,不管是部分数组还是其它数据。

   构造函数的目的是保证每一个对象都被正确初始化,不管你是从程序栈,可用内存堆分配空间,还是作为静态数组元素。让原始数据旁路掉构造函数被忌讳的事情。也导致你不能用初始的数据来创建对象静态数组——你必须调用构造函数!


//
class CFooble {
    int x,y,z;
public:
    CFooble(int xx, int yy, int zz)
        : x(xx),y(yy),z(zz) { ... }
    CFooble(int i) { x=y=z=i; }
};
CFooble table[] = {
    CFooble(1,2,3),
    CFooble(4,5,6),
    CFooble(0),    // can use any constructor!
};
//



 
下面的代码是个可以编译的完整例子。


//
// StaticClassArray — 说明如何初始化在C++对象的静态C数组
// 编译方法如下:
//
//    cl fooble.cpp
//
#include <stdio.h>





  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:C语言中的面向对象(2)-C语言的多态实现
· 下一篇:经典:教你理解复杂的C/C++声明
· SCJP认证套题解析之十二
· C++ Builder 设计工具栏和酷栏 二
· 拦截Windows消息--C++ Builder的API后门
· 打破Java定律:无需创建对象--Ioc容器革命
· 多条件数据库查询的优化方法


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077