由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++问题,confusing...
相关主题
一道c++的考古题急问:compile and build dependency
请教各路C++大神 为什么f(3) 输出是 'dd'find bugs of c++ codes
C++的一个小疑问,求解惑const reference in copy constructor
[合集] C++问题(copy constructor)C++里面
C++ operator = overloading用copy & swap有啥优点为什么在overloading中,friend <<不能读取private值呢?
一个关于assignment constructor和expection的问题Why should i include .cpp instead of .h
C++编程问题,关于static member 在class中的使用,谢谢关于c++的constructor的面试题
请教一个c++ throw exception 问题关于C++ copy-constructor 一个奇怪的问题
相关话题的讨论汇总
话题: func2话题: const话题: int话题: return
进入Programming版参与讨论
1 (共1页)
g***e
发帖数: 577
1
#include
using namespace std;
class A{
int i; // a mark to show the difference
public:
A(int ii=1):i(ii){} // default constructor
A(const A& a) {i=a.i+1;} // copy constructor,just increase i by 1
int ivalue() const {return i;} //the function to show the mark
};
A func1(const A& a){
return a;
}
A func2(const A& a){
A b(a.ivalue());
return b;
}
int main(){
A a;
A b=func1(a);
A c=func2(a);
q*****g
发帖数: 72
2
"c = func2(a)" used default contructor, not copy constructor!

1

【在 g***e 的大作中提到】
: #include
: using namespace std;
: class A{
: int i; // a mark to show the difference
: public:
: A(int ii=1):i(ii){} // default constructor
: A(const A& a) {i=a.i+1;} // copy constructor,just increase i by 1
: int ivalue() const {return i;} //the function to show the mark
: };
: A func1(const A& a){

g***e
发帖数: 577
3
yep, I found it explained as return optimization in a book.

【在 q*****g 的大作中提到】
: "c = func2(a)" used default contructor, not copy constructor!
:
: 1

d****r
发帖数: 1017
4
但是为什么都是返回一个A类,func1调用copy constructor,
而func2调用default constructor呢?
i*c
发帖数: 1132
5
你用的是gcc吧。 用VC的结果是122。

1

【在 g***e 的大作中提到】
: #include
: using namespace std;
: class A{
: int i; // a mark to show the difference
: public:
: A(int ii=1):i(ii){} // default constructor
: A(const A& a) {i=a.i+1;} // copy constructor,just increase i by 1
: int ivalue() const {return i;} //the function to show the mark
: };
: A func1(const A& a){

g***e
发帖数: 577
6
I guess the compiler didnt construct a local object, then return it in func2.
It constructs the final destination directly in the function.

【在 d****r 的大作中提到】
: 但是为什么都是返回一个A类,func1调用copy constructor,
: 而func2调用default constructor呢?

X****r
发帖数: 3557
7
Copied from the holy standard:
12.8 Copying class objects [class.copy]
15Whenever a class object is copied and the original object and the copy
have the same type, if the implementation can prove that either the
original object or the copy will never again be used except as the
result of an implicit destructor call (_class.dtor_), an implementa-
tion is permitted to treat the original and the copy as two different
ways of referring to the sam
g***e
发帖数: 577
8
强就一个字.

【在 X****r 的大作中提到】
: Copied from the holy standard:
: 12.8 Copying class objects [class.copy]
: 15Whenever a class object is copied and the original object and the copy
: have the same type, if the implementation can prove that either the
: original object or the copy will never again be used except as the
: result of an implicit destructor call (_class.dtor_), an implementa-
: tion is permitted to treat the original and the copy as two different
: ways of referring to the sam

1 (共1页)
进入Programming版参与讨论
相关主题
关于C++ copy-constructor 一个奇怪的问题C++ operator = overloading用copy & swap有啥优点
C++ 用户定义exception的标准用法是什么?一个关于assignment constructor和expection的问题
C++默认的copy constructor的疑惑C++编程问题,关于static member 在class中的使用,谢谢
一个关于C++ template和overload的问题请教一个c++ throw exception 问题
一道c++的考古题急问:compile and build dependency
请教各路C++大神 为什么f(3) 输出是 'dd'find bugs of c++ codes
C++的一个小疑问,求解惑const reference in copy constructor
[合集] C++问题(copy constructor)C++里面
相关话题的讨论汇总
话题: func2话题: const话题: int话题: return