cpp function 뒤 colon(:)이 뭘까?
C++에서 function 정의 뒤에 붙는 : (콜론)은 문맥에 따라 완전히 다른 의미를 가질 수 있습니다. 당신이 묻는 “function 뒤에 콜론”은 아래 둘 중 하나일 가능성이 높습니다:
생성자 이니셜라이저 리스트는 객체가 생성될 때마다 실행됩니다.
가장 흔하게 보이는 문법입니다:
class Person {
public:
std::string name;
int age;
// 생성자: 멤버 초기화를 이니셜라이저 리스트로 수행
Person(std::string n, int a) : name(n), age(a) {}
};
클래스 멤버를 생성자 호출 전에 초기화하는 문법
// 이니셜라이저 리스트 방식 (권장)
Person(std::string n, int a) : name(n), age(a) {}
// 대입 방식 (비추천)
Person(std::string n, int a) {
name = n;
age = a;
}
구분 | 이니셜라이저 리스트 | 생성자 내부 대입 |
---|---|---|
초기화 시점 | 생성자 호출 직전 | 생성자 내부 실행 중 |
성능 | 빠름 (불필요한 디폴트 생성 생략) | 느림 (디폴트 → 대입) |
필수 상황 | const, reference, 초기화 순서 중요 | 없음 |
C++11부터는 함수 정의에 리턴 타입을 뒤에 적을 수 있게 되었습니다:
auto add(int a, int b) -> int {
return a + b;
}
이건 특히 템플릿 함수나 람다식처럼 복잡한 타입을 리턴할 때 유용합니다.