zoukankan      html  css  js  c++  java
  • 关于函数返回值的讨论与总结

    class A
    {
    public:
    A()
    {
    cout<<"普通构造函数"<<endl;
    }
    A(const A& a)
    {
    cout<<"copy construct"<<endl;
    }
    ~A()
    {
    cout<<"deconstruct"<<endl;
    }
    A& operator=(const A &a)
    {
    cout<<"复制操作符"<<endl;
    return *this;
    }
    };
    A fA(A a)
    {
    //A a;
    return a;
    }
    int main()
    {
    A a;
    A b;
    b=fA(a);


    system("pause");
    return 0;
    }

    1.  对于函数返回的是引用还是非引用,如果我们采用这种方式  A b=fun(a) ,不产生影响。

    2.  如果 以这种方式调用, A b ; b=fun(a)  且 函数已拷贝的形式返回,那么可以分为三种

    函数声明形式

    A fun(A &a)

    {

       return a;

    }

    A fun(A a)

    {

      return a;
    }

    A fun()

    {

        A a;

        return a;
    }

    函数返回对于拷贝构造函数调用的情况 b=fun(a) 调用一次拷贝构造函数 调用两次拷贝构造函数,一次是传入实参的时候,一次是return 的时候 不调用拷贝构造函数。(这个比较奇怪)我想是编译器优化的结果。
  • 相关阅读:
    java8 流操作
    MySQL重置密码
    利用工厂模式+策略模式去掉if-else
    windows10下按照mysql主从复制
    事务隔离级别
    事务传播行为
    Using hints for Postgresql
    PostgreSQL SQL HINT的使用说明
    源码升级SUSE openssh
    mysql之my.cnf详解
  • 原文地址:https://www.cnblogs.com/dyc0113/p/3192766.html
Copyright © 2011-2022 走看看