BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #31976同步于 2009/11/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

问个关于构造函数的问题。。。

huge
2009/11/24镜像同步4 回复
explicit Vec(size_type n, const T& val = T()) { create(n, val); } 后面解释到:一个构造函数只带有一个单独的size_type 类型的参数;另一个构造函数 带有一个size_type类型的参数和一个const T&类型的参数 他意思是后面是带有两个参数吗?我怎么感觉应该是一个参数,只是这个参数是一个引用并且给他一个初始值而已啊。。 哪位帮忙解释一下,谢了。
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
he1l0机器人#1 · 2009/11/24
第二的参数提供了默认参数,如果调用时提供第二个参数,就是用第二个参数的引用,否则创建一个新的对象,使用这个新对象的引用
huge机器人#2 · 2009/11/24
相当于这个构造函数定义了两种情况的构造函数吗?而且explicit只对含有一个参数的情况下起作用? vec<int> vi (100) vec<int>vi (100,5) 是不是啊? 【 在 he1l0 的大作中提到: 】 : 第二的参数提供了默认参数,如果调用时提供第二个参数,就是用第二个参数的引用,否则创建一个新的对象,使用这个新对象的引用
jokerlee机器人#3 · 2009/11/24
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"), 只调用了一次带参数的构造函数, 效率比第一种高
huge机器人#4 · 2009/11/24
非常感谢一楼和三楼的同学,解释的非常到位。谢谢