swift的inout和c++的传递引用类型

来源:互联网 发布:极致游戏优化版win7 编辑:程序博客网 时间:2024/06/02 08:53

swift的inout

func say(inout message: String) -> Void {        print("message: \(message)")        message = "World"}var mes = "Hello"say(&mes)print("in the end, message: \(mes)")

输出:

message: Helloin the end, message: World

c++传递引用类型

#include <iostream>using namespace std;void changeA(int &a) {        cout << "before changing, a is " << a << endl;        a = 23; }int main(void){        int a = 12;         changeA(a);        cout << "after changing, a is " << a << endl;        return 0;}

输出

before changing, a is 12after changing, a is 23

总结

  • c++中传递引用类型和swift中的inout都是对原存储单元的修改
  • 用法略有不同:

    语言 函数定义 函数调用 swift inout & c++ & -
    • c++在定义处加上&, 调用处同普通用法无异
    • swift在定义处加inout, 调用处加&
  • c++的缺点:
    • 被调函数如果传引用类型,调用时不易和普通调用区分开来,容易引发错误
  • swift从定义和调用都能与普通函数区别开来,更加安全
0 0
原创粉丝点击