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

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 复制代码
有参构造函数

拷贝构造函数
拷贝构造函数
析构函数
析构函数
析构函数
相关推荐
2601_956121972 小时前
线性DP(入门)
c++·算法·动态规划
彷徨而立2 小时前
【C/C++】多线程读写普通 int 变量的一些问题
java·c语言·c++
Freak嵌入式2 小时前
树莓派 Pico GPIO 深度解析:从 MCU 架构到寄存器控制,底层原理与实践指南
java·开发语言·科技·单片机·嵌入式硬件·架构
蒸蒸yyyyzwd2 小时前
cpp web server 面试可能问题总结
c++·笔记·八股
啊啊啊啊啊!!!!2 小时前
【c++】map和set的使用
开发语言·c++
hu9245195592 小时前
Matlab保护源代码—P文件和exe文件详细解析
开发语言·matlab
for_ever_love__2 小时前
python爬虫: GET请求与POST请求
开发语言·爬虫·python·网络编程
Freak嵌入式2 小时前
实战对比:用 mpremote/Putty/MobaXterm 连接树莓派 Pico REPL,谁更省心?
java·大数据·开发语言·科技·单片机·嵌入式硬件
ttwuai2 小时前
Go 后台管理系统组件库文档怎么写,才不会坑后续维护?
开发语言·javascript·golang
茉莉玫瑰花茶2 小时前
知识库的构建 [ 3 ]
开发语言·python