本文的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) {
}
};
这样就达到目的了。
阅读(433) | 评论(0) | 转发(0) |