返回信息流explicit Vec(size_type n, const T& val = T()) { create(n, val); }
后面解释到:一个构造函数只带有一个单独的size_type 类型的参数;另一个构造函数 带有一个size_type类型的参数和一个const T&类型的参数
他意思是后面是带有两个参数吗?我怎么感觉应该是一个参数,只是这个参数是一个引用并且给他一个初始值而已啊。。
哪位帮忙解释一下,谢了。
这是一条镜像帖。来源:北邮人论坛 / cpp / #31976同步于 2009/11/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
问个关于构造函数的问题。。。
huge
2009/11/24镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
相当于这个构造函数定义了两种情况的构造函数吗?而且explicit只对含有一个参数的情况下起作用?
vec<int> vi (100)
vec<int>vi (100,5)
是不是啊?
【 在 he1l0 的大作中提到: 】
: 第二的参数提供了默认参数,如果调用时提供第二个参数,就是用第二个参数的引用,否则创建一个新的对象,使用这个新对象的引用
vec<int> vi (100) 构造一个100个int的vector,用默认构造函数构造每个int (其实内置类型没有构造函数)
vec<int>vi (100,5) ,构造一个100个int的vector,给每个int赋初值5
第二个构造函数的作用体现在类对象容器上,比如需字符串要定义一个每个元素都是“hello”的string vector
可以 用vector<string> vec(100), 先定义,再一个一个的赋值, 对于每个string元素, 调用了一次拷贝构造函数, 和一次默认构造函数
而用vector<string> vec(100, "hello"), 只调用了一次带参数的构造函数, 效率比第一种高