类类型参数函数调用发生了什么

cpp 复制代码
class Foo{
public:
    int key;
    int val;
    Foo():key(0),val(0){
        cout<<"无参构造函数\n";
    }
    Foo(int k, int v):key(k),val(v){
        cout<<"有参构造函数\n";
    }
    ~Foo(){cout<<"析构函数\n";}
    Foo(const Foo& foc){
        this->key = foc.key;
        this->val = foc.val;
        cout<<"拷贝构造函数\n";
    }
};


Foo func(Foo foo){
    return foo;
}

int main() {
    Foo foopus(1,1);
    cout<<"\n";
    func(foopus);
}

调用func传入foo类型的参数调用几次构造函数,几次析构函数?

答:两次构造,两次析构。

第一次传入函数参数时,会调用拷贝构造函数,构造函数参数里的对象foo。

第二次,函数返回时,会返回一个临时变量,调用拷贝构造函数,从foo拷贝。

对应的有两次析构函数。

bash 复制代码
有参构造函数

拷贝构造函数
拷贝构造函数
析构函数
析构函数
析构函数
相关推荐
Y3815326625 分钟前
SERP 数据清洗实战:字段标准化、日期解析与去重键
开发语言·数据库·python·python数据库
汉克老师11 分钟前
GESP2026年9月认证C++四级( 第三部分编程题(1、新汉诺塔))精讲
c++·gesp·小学生·学c++编程
君顾119 分钟前
本地城市低空经济管理系统定制:城市级低空运营平台架构与落地实战
java·开发语言·飞手
多多鼠1 小时前
System Prompt 的“版本漂移”问题:从变更管理到 A/B 测试体系
开发语言·网络·人工智能·python·langchain
唠玖馆1 小时前
智能指针详解
c++
WiChP1 小时前
【V0.1B16】从零开始的2D游戏引擎开发之路
开发语言·算法·游戏引擎
ShineWinsu2 小时前
对于Git:基础操作的超详细保姆级解析
linux·c++·git·面试·备份·管理·版本控制器
小小de风呀2 小时前
de风——【从零开始学C++】(二十)红黑树封装map和set
c++·学习
孙启超2 小时前
【AI开发之Rust】第 8 课:泛型、trait 与 trait 对象
开发语言·后端·rust
青梅橘子皮2 小时前
Blue---枚举
c++