n*******s 发帖数: 482 | 1 code :
class Base{
public:
Base(){cout << "Base()" << endl;}
Base(const Base&){cout << "Base(const Base&)" << endl;}
~Base(){cout << "~Base()" << endl;}
};
Base func(Base b){return b;}
void test1(){
Base a;
func(a);
}
void test2(){
Base a;
Base b = func(a);
}
int main(){
test1();
cout<<"----------"<
test2();
return 0;
}
// from the output,
test1() will
1. first call Base's default constructor for "Base a"
2. call Base's copy constructor since parameter is passed by value
3. call Base |
s*******s 发帖数: 1568 | 2 return value optimization, you can refer more effective c++
【在 n*******s 的大作中提到】 : code : : class Base{ : public: : Base(){cout << "Base()" << endl;} : Base(const Base&){cout << "Base(const Base&)" << endl;} : ~Base(){cout << "~Base()" << endl;} : }; : Base func(Base b){return b;} : void test1(){ : Base a;
|
n*******s 发帖数: 482 | 3 got it. Shame on me, I read More Effective last year...
【在 s*******s 的大作中提到】 : return value optimization, you can refer more effective c++
|
c****p 发帖数: 32 | 4 从汇编看很清楚:D
http://www.codepp.com/default.aspx?g=posts&m=59post59
【在 n*******s 的大作中提到】 : code : : class Base{ : public: : Base(){cout << "Base()" << endl;} : Base(const Base&){cout << "Base(const Base&)" << endl;} : ~Base(){cout << "~Base()" << endl;} : }; : Base func(Base b){return b;} : void test1(){ : Base a;
|