Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8101407
  • 博文数量: 159
  • 博客积分: 10424
  • 博客等级: 少将
  • 技术积分: 14615
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-14 12:45
个人简介

啦啦啦~~~

文章分类
文章存档

2015年(5)

2014年(1)

2013年(5)

2012年(10)

2011年(116)

2010年(22)

分类: C/C++

2010-07-14 13:03:39

本文的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) {
     }
};
这样就达到目的了。
阅读(4981) | 评论(5) | 转发(0) |
给主人留下些什么吧!~~

wang5090202011-11-07 16:29:17

GFree_Wind: 这篇文章是我07年写的了。。。搬来CU的时候,也给拿过来了啊。

C语法还是比较简单了。不过你这句话真的是对我一个很大的鼓励啊.....
我对C语言,原来是学校学一点,现在全部都还给老师,感觉太高深了,现在就当成一兴趣和爱好吧,希望有时间继续下去.

GFree_Wind2011-11-04 23:43:30

wang509020: 看你的文章,看得我这个C文盲都有点了解......
这篇文章是我07年写的了。。。搬来CU的时候,也给拿过来了啊。

C语法还是比较简单了。不过你这句话真的是对我一个很大的鼓励啊

wang5090202011-11-04 16:38:14

看你的文章,看得我这个C文盲都有点了解.

GFree_Wind2011-04-29 11:44:56

ghoststears: 数组是“元类型”,而 vector 是 ADT.....
恩。本质。

ghoststears2011-04-29 11:13:18

数组是“元类型”,而 vector 是 ADT