Press "Enter" to skip to content

[월:] 2022년 08월

오버로딩(overloading), 오버라이딩(overriding) 뭐가 다르지?

OOP(오브젝트 오리엔티드 프로그래밍; 객체지향프로그래밍) 언어를 사용하다보면 오버로딩, 오버라이딩 이란 용어를 듣게 되는데…

젠장 한 10년 되는거 같은데… 발음이 비스끄무레 하다보니 자꾸 잊어 먹는다.(그럼에도 불구하고 쓰긴하는데… ㅋㅋㅋ)

자꾸 잊어먹는건 적어놓자!!

우선 사전적 의미(https://translate.google.com)

OverloadingOverriding
과부하
Overload(초과 적재)
우선
Override(우세하다)

프로그래머에게 의미

OverloadingOverriding
함수 추가 정의
int test(int a); 라는 함수가 있다 치면,
int test(int a, int b); 라는 함수를 정의해서 사용할 수 있다.
호출할때 함수명이 test인데, 파라미터의 갯수나 타입이 서로 달라야 한다.
-> 당연히 그래야 어느 함수를 호출하는지 구분이되지요.
함수 재정의
파생 클래스에 동일한 함수를 재정의해서 기능을 바꿔버림.

예를 들자면 org라는 베이스 클래스에 두 숫자를 입력 받아 더하는 add라는 함수가 있는데,
class org{
int add(int a, int b){
return a + b;
}
}

파생 클래스 neo에 add를 재정의해서 두 숫자를 입력받아 더한 다음에 3을 더 더하는 기능으로 재정의 한다.
class neo:org{
int add(int a, int b){
return a + b + 3;
}
}

neo 인스턴스에서 add를 아래와 같이 호출하면 33이 리턴된다.
neo 클래스에는 add 함수가 2개 정의 되어 있지만 파생 클래스에 오버라이딩 된 함수가 호출된다.
neo n = new neo();
rtn = n->add(10 + 20);

언어에 따라 파생클래스의 함수에 overriding 과 같은 키워드를 써줘야 하는 것이 일반적이다.

vi 탭문자를 스페이스 4개로 고정하기

탭문자를 스페이스 4개로 설정하여 프로그래머에게 유용한 코드 배열을 보여주는 형태를 만들어 보자

커맨드 모드에서 설정하는 방법 : 단점. vi를 재실행 하면 설정 값이 무효화 된다.


탭을 스페이스로 변환

:set expandtab

현재 탭을 스페이스로 전환

:retab

< , > 키로 들여쓰기, 내어쓰기 할때 탭을 스페이스로 변환할 갯수

:set shiftwidth=4
혹은
:set sw=4

탭당 스페이스 갯수

:set tabstop=4
혹은
:set ts=4

위 내용을 한줄로 설정

:set sw=4 ts=4 expandtab

초기 값을 파일로 설정하여 vi를 실행 할때마다 기본값으로 적용되게 한다.

일단 이 내용은 리눅스, 유닉스, 맥에서 사용가능하다.

홈디렉토리의 .vimrc 파일에 기본 설정을 등록할 수 있다.


파일 열기

vi ~/.vimrc

파일에 입력할 내용

set tabstop=4
set shiftwidth=4
set expandtab

참고로 추가(하이라이트 설정)

highlight Comment term=bold cterm=bold ctermfg=2