ilbn20
2015-05-09 05:50
采纳率: 28.6%
浏览 1.5k
已采纳

复制构造函数小问题

如果类中成员函数的参数和返回值都是此类对象,那么复制构造函数调用两次?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • threenewbee 2015-05-09 06:12
    已采纳

    是的,一次发生在参数传入,一次发生在return
    如果你没有返回值,那么只调用一次

     #include <iostream>
    using namespace std;
    
    class A
    {
    public:
        A() { cout << "A()" << endl; }
        A(const A& a) { cout << "A(const A& a)" << endl; }
    };
    
    void foo(A a) {  }
    
    int main()
    {
        A a;
        foo(a);
    }
    
    已采纳该答案
    打赏 评论
  • oyljerry 2015-05-09 06:24

    先从语法上,是会发生拷贝构造,但是编译器会有一些优化处理。
    同时语法也可以改进,比如传递引用来减少拷贝

    打赏 评论

相关推荐 更多相似问题