zoukankan      html  css  js  c++  java
  • 类间调用inline函数的效率

    问题描述:

    class A

    {

    public:

    int x, y, k, NY;

    inline int f(int i, int j, int k)  {return ((i)*(NY + 1) * 9 + (j) * 9 + (k));};

    int f_notInline(int i, int j, int k);

    protected:

    private:

    };

    int A::f_notInline (int i, int j, int k)

    {

    return ((i)*(NY + 1) * 9 + (j) * 9 + (k));

    }

    class B

    {

    public:

    A Aprob;

    inline int pl(int i, int j, int k) {return Aprob.f3D(i, j, k);}

    inline int pl_f_notInline (int i, int j, int k) {return Aprob.f_notInline (i, j, k);}

    int D::pl_notIline_f(int i, int j, int k);

    protected:

    private:

    };

    int D:: pl_notIline_f (int i, int j, int k)

    {

    return Aprob.f3D(i, j, k);

    }

    A类中定义inline函数f和普通函数f_notinline

    用B类分别用以下三种形式调用:

    1. B类中的inline函数pl调用A类中的inline函数f:inline int pl(int i, int j, int k) {return Aprob.f3D(i, j, k);}

    用时:

    clip_image001

    2. B类中的inline函数 pl_f_notInline 调用A类中的普通函数f_notinline:inline int pl_f_notInline (int i, int j, int k) {return Aprob.f_notInline (i, j, k);}

    用时:

    clip_image002

    3. B类中的普通函数 pl_notIline_f 调用A类中的inline函数f:int D::pl_notIline_f(int i, int j, int k);

    用时:

    clip_image003

    结论:

    类间调用inline函数时,若要保持inline函数的性质,必须在两个类中都已inline函数的形式表示。

    一旦有一方不是inline的形式,就会退化成普通函数的形式调用。

  • 相关阅读:
    使用babel插件集
    使用babel
    webpack基本配置
    vue-router参数传递
    路由(二) router-link的使用
    路由使用(一)
    获取DOM
    父组件传递值给子组件(一)
    定义全局组件
    Windows下更改MySQL数据库的存储位置
  • 原文地址:https://www.cnblogs.com/shawnpoo/p/3304604.html
Copyright © 2011-2022 走看看