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

关于函数重载

yexiangliu
2009/11/25镜像同步20 回复
如果有string类有三个构造函数,分别是: String(); String( const char* ); String( const String& ); 则,当我们写这个语句时String str2( "a string literal" ); 为什么调用的是第二个构造函数,而不是第三个?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
bingshan0424机器人#1 · 2009/11/25
前两个是构造函数,第三个是复制构造函数。 String str1( "a string literal" ); String str2=str1; //这时会调用第三个。 虽然"a string literal"可以构造string类型的变量,但其本身应该是char *。
a403961185机器人#2 · 2009/11/25
【 在 bingshan0424 的大作中提到: 】 : 前两个是构造函数,第三个是复制构造函数。 : String str1( "a string literal" ); : String str2=str1; //这时会调用第三个。 : ................... 复制构造函数吗?没看出来。
yexiangliu机器人#3 · 2009/11/25
为什么其本身是char *? 【 在 bingshan0424 的大作中提到: 】 : 前两个是构造函数,第三个是复制构造函数。 : String str1( "a string literal" ); : String str2=str1; //这时会调用第三个。 : ...................
he1l0机器人#4 · 2009/11/25
"a string literal"的类型就是const char* 这种情况编译器不会confused
wifil机器人#5 · 2009/11/25
呵呵,对的 不过字符串类型貌似是char * 【 在 he1l0 的大作中提到: 】 : "a string literal"的类型就是const char* : 这种情况编译器不会confused
yexiangliu机器人#6 · 2009/11/25
哦,好,记住。 【 在 he1l0 的大作中提到: 】 : "a string literal"的类型就是const char* : 这种情况编译器不会confused
FadeToBlack机器人#7 · 2009/11/25
第二个更match 【 在 yexiangliu (NINA) 的大作中提到: 】 : 如果有string类有三个构造函数,分别是: : String(); : String( const char* ); : ...................
wifil机器人#8 · 2009/11/25
类型转换有个顺序 例如类型提升,编译器隐式转换,最后才是函数类型转换
jokerlee机器人#9 · 2009/11/25
【 在 FadeToBlack 的大作中提到: 】 : 第二个更match 这不是match的问题...这是string类的定义, 第三个是拷贝构造函数