Contents

조회 수 6670 댓글 0
Atachment
첨부 '2'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
인라인 함수(Inline Function)란?

- 함수의 호출 시에 함수의 내용이 삽입되는 함수이다.
- 매 함수의 호출마다 동일한 코드가 삽입된다.
- 함수의 호출에 따른 주소연산 및 반환값에 대한 처리부분이 줄어들기 때문에, 일반함수보다 실행시간이 빨라진다.
- 매크로에 비해 구조적으로 사용할 수 있으며 코드의 최적화에 유리하다.

-> 코딩 연습
※ 직접 코딩 해 보길 바란다.
======================================================
#include <iostream.h>

class MyClass
{
public:
    inline int Max(int p, int q);
    inline int Min(int p, int q);
};

inline int MyClass::Max(int p, int q)
{
    return ((p > q) ? p : q);
}

inline int MyClass::Min(int p, int q)
{
    return ((p < q) ? p : q);
}

void main()
{
    int i, j;
    MyClass Test;

    i = 10;
    j = 20;

    cout << "Bigger Number " << i << " and "
        << j << " is " << Test.Max(i, j) << endl;

    cout << "Smaller Number " << i << " and "
        << j << " is " << Test.Min(i, j) << endl;
}

※ MyClass 클래스 멤버함수 Max(), Min()은 인라인 함수로 정의되어 있다.
    main() 함수에서 실행 시 해당 함수의 코드가 삽입되어 실행된다.

※ 첨부파일 소스참고(인라인함수01.cpp)
======================================================
#include <iostream.h>

class MyClass
{
private:
    int x, y;

public:
    void SetXY(int p, int q)
    {
        x = p;
        y = q;
    }

    void ShowXY()
    {
        cout << "X = " << x << endl;
        cout << "Y = " << y << endl;
    }
};


void main()
{
    MyClass Test;
    Test.SetXY(1976, 1980);
    Test.ShowXY();
}

※ 멤버함수 SetXY()는 클래스 선언부에 정의되어 있기 때문에 자동으로 인라인 함수로 정의된다.

    만약 함수의 코드 길이가 컴파일러가 제한하고 있는 길이를 초과하면, 일반 함수 컴파일 된다.

※ 첨부파일 소스참고(인라인함수02.cpp)

?

  1. '2014 모바일 개발 트렌드' 발표자료입니다.

    Date2014.10.02 CategoryDevelop Byhooni Views1138
    Read More
  2. Aspect Oriented Programming in Objective-C

    Date2015.05.18 CategoryDevelop Byhooni Views949
    Read More
  3. DDay Memo 1.9.4 소스코드

    Date2015.10.03 CategoryDevelop Byhooni Views0
    Read More
  4. GCM 사용하기 2 (단말에 GCM 구현하기)

    Date2013.07.06 CategoryDevelop Byhooni Views23412
    Read More
  5. GCM 사용하기 3 (JSP로 GCM 푸시 서버 만들기)

    Date2013.07.06 CategoryDevelop Byhooni Views25428
    Read More
  6. git 브런치 배우기 (링크)

    Date2013.07.09 CategoryDevelop Byhooni Views20702
    Read More
  7. GPL, AGPL, MPL,.. 한눈에 보는 오픈소스SW 라이선스

    Date2014.10.14 CategoryDevelop Byhooni Views1267
    Read More
  8. How to Test SMTP AUTH using Telnet

    Date2018.04.05 CategoryDevelop Byhooni Views1590
    Read More
  9. JSON, BSON 변환

    Date2013.04.23 CategoryDevelop Byhooni Views11874
    Read More
  10. Laravel 5 Failed opening required bootstrap/../vendor/autoload.php

    Date2018.01.24 CategoryDevelop Byhooni Views1836
    Read More
  11. Mac OS 에 Jenkins 설치하기 (Homebrew)

    Date2017.03.15 CategoryDevelop Byhooni Views8398
    Read More
  12. macOS에 node, npm 설치하기 (homebrew)

    Date2021.11.06 CategoryDevelop Byhooni Views1460
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 71 Next
/ 71