1.
같은 이름, 다른 매개 변수 → 함수 오버로딩
C++에서 ' 함수이름, 매개변수 선언' 이 두 가지를 보기 때문.
2.
함수의 디폴트 값은 오른쪽 부터 넣어야 적용 가능.
3.
C에는 매크로 함수가 있다.
장점 : 실행속도 이점.
단점 : 정의 어렵고 복잡한 함수 정의는 한계가 있다.
이를 C++에서는 inline 함수로 대체 가능한데,
매크로 대비 단점이 모든 자료형이 되는 C대비 단점이있다.
4.
const int num = 10; → 변수 num 상수화
const int *ptr1 = &val1; → 포인터 ptr1로 변수값 변경 하지 않겠다.
int *const ptr2 = &val2; → 포인터 ptr2가 상수화
const int *const ptr3 = &val3; → 포인터 ptr3 상수화, ptr3로 변수 수정 X
5.
메모리 공간
데이터 : 전역 변수 저장되는 영역
스택 : 지역 변수 및 매개변수 저장
힙 : malloc 함수 호출에 의해 프로그램이 실행되는 과정에서 동적으로 할당 이뤄지는 영역
6.
기능처리 클래스는 컨트롤 클래스 또는 핸들러 클래스라고 부른다.
7.
참조자
int num1 = 2010
int *ptr = &num1 ( 포인터 )
int &num2 = num1 ( 참조자 )
8.
참조형 반환
지역 변수를 참조형으로 반환하면 안됩니다.
9.
객체간의 대화 방법은 Message Passing 방법
10.
int Getx() const;
→ " 이 함수 내에서는 멤버변수에 저장된 값을 변경하지 않겠다. "
const 참조자를 매개변수로 쓰면 const 함수만 호출 가능.
11.
멤버 이니셜라이져
생성자로 맴버변수 초기화하면
1. 초기화 대상 명확히
2. 성능 이점
3. const 맴버변수 이니셜로 초기화 가능
12.
new로 동적 할당 → 생성자 호출
malloc으로 동적 → 생성자 X
13.
복사 생성자
SoSimple( const sosimpe © ) : num1(copy.num1);
SoSimpe sim2 = sim1; → 이건 SoSimple sim2(sim1)과 동일
14.
explicit → 묵시적 변환 금지
15.
복사 생성자 호출 시점
1.기존 생성된 객체를 이용해서 새로운 객체가 초기화
2. call by value 방식의 함수 호출에서 객체를 인자로 전달하는 경우
3. 객체를 반환하되, 참조형으로 반환하지 않는 경우
16.
friend 선언 → 정보은닉에 위배 → 조심히 쓸 것!
17.
static 멤버 변수 : 클래스 당 하나씩만 생성
mutable → const 장점이 사라짐 → 많이 XXXX
18.
클래스의 멤버는 해당 클래스의 생성자를 통해서 초기화 해야 한다.
1. 기초 생성자
2. 유도 생성자
1. 유도 소멸자
2.기초 소멸자
19.
다형성
A형 포인터 변수는 A 객체 또는 A를 직접, 간접 상송하는 모든 객체 가르키기 가능.
20.
오버라이딩
→ 유도클래스에서 기초클래스 함수를 덮어 대체 ( 같은 함수 이름, 형태 )
21.
가상함수
" C++ 컴파일러는 포인터를 이용한 연산의 가능성 여부를 판단 할 때, 포인터의 자료형을 기준으로 판단하지, 실제 가리키는 객체의 자료형을 기준으로 판단하지 않는다. "
virtual 함수 → 다형성 ( 실제 참조하는 자료 객체에 따라 함수 호출 )
순수 가상 함수 : 함수의 몸체가 정의되지 않은 함수
ex )
virtual int GetPay() const = 0; 순수 가상 함수
>> 명시적으로 몸체를 정의하지 않았음.
만약 순수 가상함수가 있다면 추상 클래스 → 객체 생성 불가 클래스
22.
가상 소멸자
virtual ~ First () { ... }
→ 유도 클래스 소멸자를 순차적으로 호출한다.
23.
가상함수 동작 원리, 가상함수 테이블 ( 그림 보충 예정 )
24.
연산자 오버로딩
(그림)
25.
대입 연산자
→ 유도 클래스의 대입 연산자에서 기초 클래스의 대입 연산자 호출 필요.
26.
함수 템플릿의 특수화 → 특정 자료형에 대해서 구분이 되는 다른 행동을 보이기 위해서
27.
템플릿 함수는 자료형 정보 생략이 되지만, 템플릿 클래스는 그러면 안된다.
28.
예외 처리의 경우
'공부 정리 > 이것저것' 카테고리의 다른 글
간단 시간복잡도 (0) | 2025.02.27 |
---|---|
가상 함수 동작 원리 - 가상 함수 테이블 (0) | 2025.01.06 |
C와 파이썬을 활용한 NVIDIA GPU - 기초 문제 (0) | 2024.07.16 |
개발자는 어떤 종류가 있을까? (0) | 2024.05.27 |
IT 용어 정리 (0) | 2024.04.20 |