1. 함수
선언과 정의는 왜 분리하는가
함수선언(프로토타입) -> main함수에서 호출 -> 함수 정의 파트
: 코드를 숨기기 위해! (정보은닉과 관련)
-> 구현부분은, 사람은 못읽는데 컴퓨터만 쓸 수 있도록.
사실 반한 값과 매개변수는 없을 수 있다
void func2(){
cout << "부작용만 존재하는 함수 " << endl;
} // 단지 외부에 문자열을 출력만 함
->이런 식으로 함수의 반환값과 관계 없이, 함수 외부에 영향을 미치는 것을 부작용(side effect)라고 부른다.
순수함수 : 부작용이 없으면서, 언제 해당 함수를 호출해도 항상 같은 값만 반환
2. 람다식
람다식? 익명함수?
람다식: 함수를 더 단순하게 표현하여, 함수의 계산을 좀 더 용이하게 표기하는 표기법
-람다식을 쓰면, 함수 안에 함수를 정의하는게 가능해진다.
-람다식을 쓰면, 매개변수의 자료형으로 auto를 쓸 수 있다.
IIFE (정의와 동시에 실행되는 함수)
-람다식은, 함수를 정의하자마자 바로 실행시킬 수 있다.
-> 이 때, 구현파트에 함수의 이름이 없기 때문에, 람다함수를 익명함수라고도 불리는 것.
3. 클래스
Class
-C++에서의 클래스: 같은, 비슷한 속성을 가진 개념들을 어느 하나로 정의 내린 것.
- 멤버함수(=매서드): 클래스 내에 속하는 함수로, 해당 클래스와 관련된 기능이 들어가야 한다.
-멤버변수: 클래스 내에 속하는 변수. 해당 클래스의 개념을 구성하는 여러가지 속성들이 해당
-생성자 : 클래스의 이름과 똑같은 이름을 가진 함수.
-> 조금 특수한 함수.
*클래스는 틀과 같다. 따라서, 이런 틀로 객체들을 여러개 찍어낼 수 있다.
이 객체를 찍어내면서, 각각의 객체에 '고유한 값'을 넣어 주는 것 = 생성자의 역할
객체를 초기화한다 = 멤버변수 선언 시, 초기값을 넣어주는 것.
this -> 이름 = 이름; 이런식으로 this포인터 사용