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

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

拷贝构造函数
拷贝构造函数
析构函数
析构函数
析构函数
相关推荐
MMjeaty21 分钟前
查找及其算法
c++·算法
青光键主22 分钟前
C语言内功强化之const修饰指针
c语言·开发语言
骷大人1 小时前
php安装skywalking_agent
开发语言·php·skywalking
恋恋西风1 小时前
Qt 打开文件列表选择文件,实现拖拽方式打开文件,拖拽加载
开发语言·qt
yong15858553431 小时前
1. Linux C++ muduo 库学习——库的编译安装
linux·c++·学习
闲人编程1 小时前
使用Python进行量化交易入门
开发语言·python·统计分析·lambda·量化·codecapsule
mit6.8242 小时前
回溯剪枝trick
c++
移远通信2 小时前
常见问题解答
开发语言·php
初见无风2 小时前
3.1 Lua代码中的元表与元方法
开发语言·lua·lua5.4
逻极3 小时前
Rust流程控制(上):if_else与match模式匹配
开发语言·后端·rust