简单代码看懂C++函数调用机制

程序执行过程中最重要的是函数调用
但是C++不像java,简单好学,复杂类型都是指针引用
写程序的都要会C++ 只有理解了C++/C ,才能懂计算机 ,只有理解了计算机,才能程序少出bug
C++的函数调用可以分三步

#include <iostream>
#include <string>
using namespace  std;
class Fa{
public:
    int a;
    int b;
    string c;
    Fa(const Fa& fa){
        cout<<"copy constructor called"<<endl;
        a = fa.a;
        b =fa.b+1;
        c = fa.c;
        cout<<"b:"<<this->b<<endl;
    }
    ~Fa(){
        cout<<"b:"<<this->b<<endl;
        cout<<"deconstractor called"<<endl;
    }
    Fa(){
    cout<<"b:"<<this->b<<endl;
    cout<<"constractor called"<<endl;
    }
};

Fa Process(Fa);

int main(){
    Fa fa;
    Fa fb=Process(fa);
    cout<<fb.b<<endl;
}

Fa Process(Fa fc){
    return fc;
}

这是一段简单的不能在简单的代码 就用它来解释
int main(){
整一个fa对象出来
Fa fa;
这一步执行的是 Fa fc(fa) 这就是函数入栈的过程 ,应为这是值传递 所以要经过拷贝构造函数
第二步 就是return fc 就要把Fa fb(fc) 这一步就是把函数的返回值保存至寄存器,并且 传给fb ,是不是和其他语言不一样
其实其他语言只是帮我们简化了这了流程 但是如果做C++不理解的话 含有指针的类对象 经过浅拷贝 如果一旦delete 回收 掉,那么就会出现野指针 程序就崩溃了

_____________________

Fa Process(Fa fc){
return fc;
}


Fa fb=Process(fa);
cout<<fb.b<<endl;

}
在这里插入图片描述
这个地方通过一个b值就可以看出
process函数 栈被回收,fc立即回收,所以就是中间的打印值就是1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值