inline在c++与kotlin

在c++中,inline用于升级c的宏定义define,他消除了define的缺点,又继承了define的优点。define宏定义,主要就是参数替换。所以,inline是可以(不一定会)进行编译期替换的。
在kotlin中,inline是对带函数参数的函数进行编译期优化,通过反编译,inline函数是把函数内容粘贴到调用处。

得出,都是在编译期的性能优化,都是通过替换,但是c++的inline是不一定的,kotlin的inline是一定的(实际上如果不带函数参数的函数,使用inline IDEA会提示没有必要)。

c++存在隐式的inline,kotlin必须显示声明,比如:
A.h:

class A {
private:
    int d;
public:
    int getD() const { return this->d; }
};

其中getD就是内联函数。
kotlin 因为函数式的原因,主要是配合lambda表示式,在kotlin中如果最后一个参数为函数调用是可以直接{ } ,也是通过inline,kotlin获得一些区别java的编码风格。比如,let源码:

@kotlin.internal.InlineOnly
public inline fun <T, R> T.let(block: (T) -> R): R {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    return block(this)
}

另外kotlin 内联还有return循环体的特性。
c++推荐大量内联,虽然内联产生了代码膨胀,但是现在的硬盘内存都是是菜价。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值