C++ 함수 오버로딩



함수 오버로딩?


C에서는 같은 이름으로 함수 명을 작성 할 수 없었다.

하지만 C++에서는 같은 이름의 함수명을 작성 후 인자 값만 다르게 해서 표현 하는 것이 가능하다.


C에서 함수 표현 

C++에서 함수 표현 

int isum( int a, int b);

float fsum( float a, float b );

int sum( int a, int b);

float sum( float a, float b );


위와 같이 C에서는 인자가 다르면 함수 명도 다르게 작성해야 하지만 C++ 에서는 인자가 달라도 함수 명이 달라도 무방하다.

이렇게 함수명을 같게 해도 인자가 다르게 해서 호출해도 함수 구분이 가능 한것을 '함수 오버로딩'이라고한다.


다음은 함수 오버로딩을 이용한 예제를 보도록 하겠다.



#include <iostream>


int sum( int a, int b)

{

std::cout<<"int형 함수 호출"<<std::endl;

return a + b;


float sum( float a, float b)

{

std::cout<<"float형 함수 호출"<<std::endl;

return a + b;

}


int main(int argc, char** argv) {

int iSum = 0, a = 2, b = 5 ;

float fSum = 0, c = 5, d = 12 ;

iSum = sum( a, b );

fSum = sum( c, d );

}


sum이라는 함수 명은 같지만 인자나 리턴 값이 하나는 int형 다른 하나는 float형으로 지정 하였다.

실행을 해보면 인자 변수 타입 별로 다르게 함수가 호출 되는 것을 확인 할 수 있다.


int형 함수 호출

float형 함수 호출



※참고로 오버 로딩과 오버 라이딩과 개념이 해깔리는 경우가 있다.

함수 오버라이딩은 클래스에서 상속시 부모 함수를 재정의 함을 의미 한다.

또한 OOP를 지원하는 언어에서는 대부분 함수 오버 로딩과 오버 라이딩이 개념이 다 들어 있으니 공부해 두시면

JAVA나 python, C#, 파스칼등을 공부할 때 많이 도움이 됩니다. ( 제가 모든 언어를 다 사용해보질 않아서 확실 한것만 적어 놨습니다. ^^)


이상으로 C++에서 함수 오버로딩에 대해 설명 드렸습니다.

도움이 되셨나요?

반응형

'프로그램 > C++' 카테고리의 다른 글

[C++] bool 자료형  (0) 2017.12.29
[C++] namespace 사용법  (0) 2017.12.27
[C++]인라인 함수 사용법  (0) 2017.12.26
[C++]함수 매개변수 디폴트 값  (0) 2017.12.25
[C++] cout,cin 사용법  (0) 2016.11.15

오라클 표현식(Case~When~Then)




표현식 사용법



특정 값에 대해 정해진 조건에 따라 다르게 표현하기 위해 나타내는 식입니다.

예를 들어 90~100 점은 A, 80~90 은 B로 표현 하고 싶은데 실제 테이블에 저장 하고 있는 값은 

아래 처럼 점수만 있을 때 표현식을 가지고 A,B를 표시하는 것이 가능합니다.


아래 테이블에는 점수 정보만 제공 하고 있습니다.



이것을 표현식을 이용하여 A,B,C로 나오게 해보겠습니다.


SELECT ID, NAME, SCORE,

      CASE WHEN SCORE > 90 THEN 'A'

           WHEN SCORE > 80 AND SCORE < 90 THEN 'B'

           WHEN SCORE > 70 AND SCORE < 80 THEN 'C'

           ELSE 'D'

      END AS GRADE

FROM TBL_REPORT_CARD



위의 결과는 아래와 같습니다.





테이블에 없던 GRAND 컬럼을 표현식으로 꾸며 봤습니다.

표현식 사용 법은 간단히 다음과 같습니다.


CASE WHEN [조건1] THEN [값1]

        WHEN [조건2] THEN [값2]

....

        ELSE [그밖에 값]

END AS [컬럼 값]


예제를 가지고 설명을 드리겠습니다.



CASE WHEN SCORE > 90 THEN 'A'


SCORE 컬럼 값이 90 이상이면 A



       WHEN SCORE > 80 AND SCORE < 90 THEN 'B'


SCORE 컬럼 값이 80이상이고 90이하면 B



       ELSE 'D'


그밖에는 D



END AS GRADE


표현식 종료 AS (ALIAS 이다. 즉 컬럼에 어떻게 표현 할지 나타내는 예약어다. )


이상으로 오라클 표현식에 대해 설명 드렸습니다.

도움이 되셨나요?

반응형

'인프라 > Oracle' 카테고리의 다른 글

[Oracle] UNION, INTERSECT, MINUS  (1) 2016.12.05
[Oracle] GROUP BY 절, HAVING 절  (0) 2016.12.04
[Oracle] 시퀀스(Sequence) 사용법  (0) 2016.11.29
[Oracle] 테이블스페이스(Table Space) 생성  (0) 2016.11.27
[Oracle] 정렬(ORDER BY)  (0) 2016.11.22

Unix/Linux du (디렉토리 별 용량 확인) 명령어 사용법



du?



디렉토리 별로 용량을 확인 하고 싶을 때는 du를 이용합니다.

현재 디렉토리기준으로 하위 디렉토리 별 용량을 가져옵니다.

일단 사용법은 간단 합니다.


du [옵션]


사용 예는 아래와 같습니다.

/home/util 폴더 밑에 test1, test2 폴더가 있으면 

/home/util 로 이동하여 du 명령어를 치면 test1,test2 폴더 용량을 확인 할 수 있습니다.http://jink1982.tistory.com/35


[hostname:/home/util]$ du

1342 ./test1

111  ./test2


du와 sort



du를 사용하면서 같이 사용 되는 명령어가 있는데 그것은 sort 입니다.

폴더가 여러개 있을때 크기 순 부터 확인 하고 싶을 때 sort로 정렬하여 볼 수 있습니다. 

sort에 대한 설명은 여기를 클릭 하시면 됩니다.


다음 예제를 보겠습니다.

[hostname:/home/util]$ du | sort -nr

91010 ./test4

2222  ./test3

1342  ./test1

111   ./test2


du를 실행 한 후 | ( 파이프 : 앞에 명령어 결과에 다음 명령어 추가 ) sort (-nr 은 sort 옵션입니다. 숫자를 역순 정렬) 를 하면 위와 같이 

용량 역순으로 출력이 됩니다.




du 옵션


du에서 자주 쓰는 옵션에 대해 나열 하였습니다.

아무래도 젤 많이 쓰는 것은 -h 로 du 명령시 기본 KB로 표시되어 보기가 어렵습니다.


-a : 모든 파일표시

-b : 표시단위를 Byte로 한다.

-k : 표시단위르 KB로 한다

-h : 사용량을 K(키로바이트), M(메가바이트), G(기가바이트) 등의 형태로 보여준다

-s : 총 사용량만 표시한다

반응형

자바 함수(method) 사용법



함수(method)란



자바에서 함수란 클래스의 기능을 뜻한다.

인간이라는 클래스가 있다고 하자 인간이 흔히 할 수 있는 것이 무엇일까?

보고, 듣고, 먹고..등등 기능이 존재 한다.

이런 기능 하나하나를 함수라 한다.


다음 인간 클래스 예제를 보자


public class human {

private int age;

private String name;

private String job;


     private boolean checkAge( int age )

{

if( age < 1 )

return false ;

return true;

}

public void setHumanInfo( int age, String name, String job)

{

if( checkAge( age ) == false )

this.age = 1;

else

this.age = age;

this.name = name;

this.job = job;

}

public void introduce()

{

System.out.println( "My Name is " + name );

System.out.println( "I`m " + age + " and my job is " + job );

}

}


여기서 인간 클래스가 할 수 있는 기능은 정보입력(setHumanInfo) 과 소개(introduce)이다. 


이 기능이 곧 함수이며 함수는 다음과 같이 작성 할 수 있다.


 [접근 범위] [리턴 형식] [함수 명]( 인자1, 인자2... ) 


[접근 범위]

  -. public : 모든 클래스에게 접근 허용

  -. protected : 상속 관계 클래스에게만 접근 허용

  -. private : 선언된 클래스에서만 허용


[리턴 형식]

  -. 함수가 종료 후 함수를 호출 한 쪽에 특정 값을 전달 해 줄 수 있다.


[인자]

  -. 함수를 호출 할 때 함수에 값을 전달 할 수 있다.


예제에 사용되었던 함수를 보며 하나씩 설명해 이해를 돕도록 하겠다.


public void introduce()

{

System.out.println( "My Name is " + name );

System.out.println( "I`m " + age + " and my job is " + job );

}


이 함수는 접근 범위가 public 이므로 어떤 객체에서 접근이 가능하다.

리턴 형식은 void로 되어있는데 이것은 리턴 값이 없는 것을 의미 한다.

또한 인자값을 넣어야 하는 부분에는 () 이렇게 아무것도 들어있지 않아 인자도 존재 하지 않는다.



public void setHumanInfo( int age, String name, String job )

{

if( checkAge( age ) == false )

this.age = 1;

else

this.age = age;

this.name = name;

this.job = job;

}


이 함수는 앞에 함수와의 차이점은 인자가 존재 한다는 점이다.

인자 넣는 부분에 age는 int형, name은 String형등으로 총 3개의 인자를 전달 해준다.





private boolean checkAge( int age )

{

if( age < 1 )

return false ;

return true;

}


이 함수는 앞에 있는 함수 들과 다르게 접근 범위가 private 이다.

human 객체 안에서만 동작 가능하며 아래 예제와 같이 다른 곳에서 사용 하려고 하면 


package sample;


public class sample {

public static void main(String[] args) {

   human jack = new human();

   human hoke = new human();

   

            jack.setHumanInfo(10, "jack", "worker" );

   jack.checkAge(10);

}

}


아래와 같은 오류가 발생 한다.

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

The method checkAge(int) from the type human is not visible


at sample.sample.main(sample.java:9)


setHumanInfo 함수 안에서 사용 하는데 이럴땐 문제가 없다.


또한 다른점이 boolean인데 boolean은 성공,실패 두가지 값을 갖는 데이터 형식이며 이 값을 리턴 해 준다.

setHumanInfo를 보자


public void setHumanInfo( int age, String name, String job )

{

        boolean retval = checkAge(age) ; -----------> checkAge 결과 값에 따라 retval에 값이 true나 false가 된다.

if( retval == false )

this.age = 1;

else

this.age = age;

this.name = name;

this.job = job;

}



이상으로 자바에서 함수 사용법에 대해 설명했다.

도움이 되셨나요?

반응형

'프로그램 > Java' 카테고리의 다른 글

[Java] 함수 오버로딩 (Function Overloading)  (0) 2016.12.07
[Java] 생성자( Constructor )  (0) 2016.12.06
[Java] 클래스와 인스턴스  (0) 2016.11.23
[Java] 데이터 타입  (0) 2016.11.20
[Java] 자바 기초, 컴파일, 실행  (0) 2016.11.19

+ Recent posts