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

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

拷贝构造函数
拷贝构造函数
析构函数
析构函数
析构函数
相关推荐
蜡笔小马6 分钟前
07.C++设计模式-组合模式
c++·设计模式·组合模式
l1t7 分钟前
JIT执行python脚本的工具codon安装和测试
开发语言·python
liulilittle19 分钟前
TCP UCP v1.0:BBR 的非破坏性约束层
网络·c++·网络协议·tcp/ip·算法·c·通信
程似锦吖28 分钟前
无中生有 之 从0开始写一个动态定时任务管理
java·开发语言
每天回答3个问题1 小时前
leetcodeHot100 | 104.二叉树的最大深度
c++·面试·
坚果派·白晓明1 小时前
【鸿蒙PC三方库移植适配框架解读系列】第五篇:完整流程图与角色职责
c语言·c++·华为·harmonyos·鸿蒙
Dxy12393102161 小时前
Python 去除 HTML 标签获取纯文本
开发语言·python·html
洛的地理研学1 小时前
Python下载并处理MOD13A3植被指数数据
开发语言·python
humcomm1 小时前
Java 新特性2026年5月速览
java·开发语言
xiao_li_ya1 小时前
C++学习日记1(`*`的理解、const关键词)
开发语言·c++