由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 也来一道c++的题
相关主题
请教一个C++问题版上牛人能不能帮忙看道面试题?
C++: Q75 copy constructor 问什么用 const reference?问一个精华区里的题目
问个C++的题目什么情况下pass by reference比pass by pointer好?
做个关于引用的题目merge两个有序数组
one c++ question问个简单的C++ 函数参数问题
C++ online Test 又一题二维数组参数怎么传好?
Question about type conversion问个c++的问题
C++ Q83: 这个const_cast什么意思?c++ new的一个问题
相关话题的讨论汇总
话题: f2话题: f3话题: const话题: void话题: c++
进入JobHunting版参与讨论
1 (共1页)
c****s
发帖数: 241
1
听来的一道c++题,大家看看
class A{
public A(int t){};
};
void f1(A a){...}
void f2(A& a) {...}
void f3(const A& a) {...}
下面的函数调用,哪些能工作,哪些不能,为什么?
f1(5);
f2(5);
f3(5);
j***i
发帖数: 1278
2
f3 不行吧 有2次type conversion

【在 c****s 的大作中提到】
: 听来的一道c++题,大家看看
: class A{
: public A(int t){};
: };
: void f1(A a){...}
: void f2(A& a) {...}
: void f3(const A& a) {...}
: 下面的函数调用,哪些能工作,哪些不能,为什么?
: f1(5);
: f2(5);

P*******e
发帖数: 1353
3
g++试了一下,一三可以,二不行。。。
我一开始也觉得三不行。。。

【在 c****s 的大作中提到】
: 听来的一道c++题,大家看看
: class A{
: public A(int t){};
: };
: void f1(A a){...}
: void f2(A& a) {...}
: void f3(const A& a) {...}
: 下面的函数调用,哪些能工作,哪些不能,为什么?
: f1(5);
: f2(5);

c****s
发帖数: 241
4
是啊,我在vs试也是一样的结果。

【在 P*******e 的大作中提到】
: g++试了一下,一三可以,二不行。。。
: 我一开始也觉得三不行。。。

c**********e
发帖数: 2007
5
f2 need a reference as input.
g***j
发帖数: 1275
6
f1() is fine since the constructor is not explict. If you declare
explict A(int t){}
f1(5) will not work.
void f2(A& a) takes a non-const parameter, but in f2(5), the parameter is a
constant. It's invalid to convert a const to a non-const.
f3(5) is fine. If you declare
explicit A(int t) {}
f3(5) will not work.

【在 c****s 的大作中提到】
: 听来的一道c++题,大家看看
: class A{
: public A(int t){};
: };
: void f1(A a){...}
: void f2(A& a) {...}
: void f3(const A& a) {...}
: 下面的函数调用,哪些能工作,哪些不能,为什么?
: f1(5);
: f2(5);

a****l
发帖数: 245
7
f3(5)行,f2(5)不行的原因在more effective c++有提到过。
如果define int i=5, 再call f2(i)还是不行,所以不是由于parameter is a const.
f2(A& a) expects a reference which means "a" may be modified in the function
, but f2(5) or f2(i) will create a temporary object of type A. The
modification will occur on the temporary object and it is not what the
programmer expected. "Implicit type conversion for references-to-non-const
objects, then, would allow temporary objects to be changed when programmers
expected non-temporary objects

【在 g***j 的大作中提到】
: f1() is fine since the constructor is not explict. If you declare
: explict A(int t){}
: f1(5) will not work.
: void f2(A& a) takes a non-const parameter, but in f2(5), the parameter is a
: constant. It's invalid to convert a const to a non-const.
: f3(5) is fine. If you declare
: explicit A(int t) {}
: f3(5) will not work.

1 (共1页)
进入JobHunting版参与讨论
相关主题
c++ new的一个问题one c++ question
Qualcomm面经C++ online Test 又一题
一个C++题Question about type conversion
c++里 这个template的写法是什么意思?C++ Q83: 这个const_cast什么意思?
请教一个C++问题版上牛人能不能帮忙看道面试题?
C++: Q75 copy constructor 问什么用 const reference?问一个精华区里的题目
问个C++的题目什么情况下pass by reference比pass by pointer好?
做个关于引用的题目merge两个有序数组
相关话题的讨论汇总
话题: f2话题: f3话题: const话题: void话题: c++