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

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

拷贝构造函数
拷贝构造函数
析构函数
析构函数
析构函数
相关推荐
悠仁さん5 分钟前
【C++】auto
java·前端·c++
郝学胜-神的一滴10 分钟前
C++ Templates 07:编译报错和调试手段与实战技巧
开发语言·c++·后端·软件工程·visual studio
害人终害己18 分钟前
Redisson 连接 Redis 失败 报错解决方案
java·开发语言
何老师的GESP C++进阶课堂18 分钟前
1、数组知识点总结
c++·青少年编程·gesp c++
jimy128 分钟前
c++的静态类型和动态类型(二)
开发语言·c++
吠品29 分钟前
箭头函数为什么不能 new
开发语言·javascript·原型模式
stolentime33 分钟前
AT_arc182_a [ARC182A] Chmax Rush!题解
数据结构·c++·算法·动态规划
longlongzihan34 分钟前
LeetCode 189. 轮转数组:从直观模拟到最优原地算法
c++·算法·leetcode
谢亮_vipxieliang37 分钟前
PHP 8 新特性:构造器属性提升与实战
开发语言·后端·php
鬼手点金1 小时前
opencode-crawl4ai使用建议
java·开发语言·人工智能·python·机器学习