클래스 멤버의 접근권한
전용(Private)
전용은 해당 클래스 내부에서만 접근이 가능하다.
C++의 기본속성은 private이다.
멤버 변수는 주로 private로 사용한다.
범용(Public)
어디에서나 접근할 수 있다.
멤버 함수는 멤버 변수의 접근을 위해 주로 범용으로 사용한다.
보호(Protected)
자신과 자식 클래스만 접근할 수 있다.
외부 입장에서는 private와 protected 모두 접근할 수 없기 때문에 같다고 본다.
Void
리턴값이나 매개변수가 없을 때 사용한다.
함수 정의
함수를 만드는 것을 함수 정의라고 한다.
함수 호출
argument가 없을 때는 빈칸(void)을 사용한다.
함수 선언
함수의 사용법을 의미하며, 컴파일러에게 함수의 정보를 준다.
함수 뒤에 세미콜론(;)을 붙여서 함수를 선언한다.
ex.void display(void);
함수를 사용할 때
함수를 호출한 값은 직접 보여주기보단 변수에 넣어 사용하는 것이 좋다.
함수를 main()함수 뒤에 정의할 때는 main()함수 앞에 함수를 선언해야 한다.
사용하지 않을 시 오류가 발생한다.
멤버 함수의 선언과 정의
멤버 함수는 클래스 안에서 정의하는 방법과 클래스 밖에서 정의하는 방법이 있다.
클래스 안에서 정의하는 경우는 잘 사용하지 않는다.
멤버 함수가 비대해질 경우, 클래스의 몸체도 커지기 때문에 수정이 어렵기 때문이다.
class Cat {
private:
int age;
public:
int getAge()
{
return age;
}
};
class Cat {
private:
int age;
public:
int getAge();
};
int Cat::getAge()
{
return age;
}
범위 지정 연산자(scope resolution operator) '::'
앞에 namespace가 있을 때 ‘::’은 어느 클래스에 포함되어 있는지 알려주는 역할을 가진다.
앞에 아무것도 없으면 ‘::’은 함수 안에서 전역변수로 접근하고 싶을 때 사용하는 역할이다.
Using과 Namespace
namespace는 이름의 충돌하는 것을 막기 위해 사용된다.
모든 식별자(변수, 함수 등의 이름)가 유일하도록 보장하는 코드 영역을 정의해 충돌을 막는다.
Using 지시문
컴파일러가 인식하지 못하는 이름이나 네임스페이스를 알 수 없는 것을 만나면 std 스페이스에서 찾도록 하는 지시문이다.
함수의 이름이 cout, cin등과 같다면 using 지시문을 사용해도 찾을 수 없다는 단점이 있다.
Inline함수
컴파일러에 의해 처리된다.
함수 코드 블록의 복사본인 기계어 코드가 직접 삽입된다.
함수를 호출하고 값을 반환하는데 드는 시간상의 지체(overhead)를 줄일 수 있다.
inline 함수를 반복하다 보면 실행 파일 사이즈가 커진다는 단점이 있다.
Visual C++에서는 한/두 줄의 짧은 실행문을 갖는 함수를 inline 함수로 취급한다.
자동 Inline함수
멤버 함수가 클래스 내부에서 정의되면 자동으로 inline 함수가 된다.
객체의 멤버 호출
직접 참조연산자는 ‘ . ’을 사용하고, 간접참조연산자는 ‘->’을 사용한다.
C++프로그래밍(21-2학기)한성현교수 강의 내용 변형 및 요약