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

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

拷贝构造函数
拷贝构造函数
析构函数
析构函数
析构函数
相关推荐
Rabitebla29 分钟前
【Linux系统编程】指令(三):创建、删除、复制、移动、看内容
linux·数据结构·c++·算法
程序员老陆34 分钟前
CMake 常用关键字与命令全景:从 set到 target_link_options的现代工程视角
c++·cmake·程序开发
事已至此先睡覺吧38 分钟前
第三篇:Java 流程控制详解:条件判断、循环与跳转语句
java·开发语言
m0_734571761 小时前
深入理解5g <二十> dmrs
开发语言·5g
码匠许师傅1 小时前
【C++三方组件】cxxopts:轻量首选的命令行解析
c++
金金计较.1 小时前
Go语言-4
开发语言·golang
hansang_IR2 小时前
【讲解】CSP-S2026 第一轮初赛
c++·算法
Methy2 小时前
IoTHub半个月崩了五次?都是裸rethrow惹的祸
服务器·c++·后端
泡海椒2 小时前
jquick-pdf 表格行列尺寸控制实战:单元格合并的可行边界
java·开发语言·pdf
我不会起名字3222 小时前
一天一道力扣Hot100(36):深度优先算法---组合总和
数据结构·c++·后端·python·算法·go