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

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

拷贝构造函数
拷贝构造函数
析构函数
析构函数
析构函数
相关推荐
名字还没想好☜14 小时前
Go 标准库 flag 包实战:参数解析、子命令、自定义 Value 类型与默认值
开发语言·后端·golang·go
j7~14 小时前
【C++】C++的IO流--详解
c++·c++io流·c++流的概念·stringstream的介绍·c语言的输入与输出
公爵爱学习14 小时前
无人机定点飞行-介绍
开发语言·图像处理·python·学习·线性回归·无人机
西西弗Sisyphus14 小时前
Qt 分类导航区的实现
开发语言·qt
zhanghaha131414 小时前
Python进阶教程:27_subprocess 模块 零基础超详细教程
开发语言·python
兄弟加油,别颓废了。14 小时前
bugku题目
开发语言·前端·python
zh_xuan14 小时前
c++ string_view
开发语言·c++
阿里嘎多学长15 小时前
2026-09-05 GitHub 热点项目精选
开发语言·程序员·github·代码托管
古少侠15 小时前
用 DS随心转 把 AI 画的 Mermaid 流程图转成 Word 里的高清图
开发语言·c#·word
FFZero115 小时前
[mpv架构] (4) demux 线程到底在“预读“什么?
c++·架构·音视频·多媒体