Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1374190
  • 博文数量: 704
  • 博客积分: 10140
  • 博客等级: 上将
  • 技术积分: 6230
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-15 20:41
文章分类

全部博文(704)

文章存档

2013年(1)

2012年(16)

2011年(536)

2010年(151)

分类: C/C++

2011-06-14 11:59:52

本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
作者:gfree.wind@gmail.com
博客:linuxfocus.blog.chinaunix.net
    

有两个类,
class A {
public:
       int data[10]
};

class B {
public:
      vector data(10);
};
这里,A是合法的,而B就会发生编译错误。
将class B改为
class B {
public:
      vector data;
};这样才合法。
为什么A可以指定数组的大小,而B就不能指定vector的初始大小呢?
原因在于vector data(10)不是像数组那样,只是简单的指定了数组的大小。这里还对每个vector元素进行了初始化,也就是说vector data(10)是包含了执行语句的,这样自然不能放在类的定义中了。
如果一定要指定data的大小,我们可以使用构造函数的初始化列表,将B改为
class B {
public:
     vector data;
     B(): data(10) {
     }
};
这样就达到目的了。

阅读(382) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~