강의 <윤성우의 열혈 C++ 프로그래밍>을 참고하여 정리한 글입니다. 🙂
https://github.com/Serin-Yoon/cpp-study/blob/master/cpp%20study/chapter1.cpp
#include <iostream>
std::cout << '출력대상' << '출력대상' << '출력대상'
std::endl
std::cin >> '변수'
#include <iostream>
int main(void) {
char name[100]; // 함수 중간 부분에서도 변수 선언 가능
std::cout << "Name: ";
std::cin >> name;
std::cout << "Welcome " << name << std::endl;
return 0;
}
#include <iostream>
int func(int a) { return a; }
int func(int a, int b) { return a + b; }
int main(void) {
std::cout << func(10) << func(10, 20) << std::endl;
return 0;
}
C++는 함수 호출 시 함수 이름과 인자 정보를 참조하여 호출할 함수 결정.
따라서 매개변수의 선언이 다르다면 동일한 이름의 함수를 정의할 수 있음.
이를 함수 오버로딩(Function Overloading) 이라 함.
/* 오버로딩 성립 예시 */
int func1(int a) { ... }
int func1(char b) { ... }
int func2(int a) { ... }
int func2(int a, int b) { ... }
/* 오버로딩 성립X 예시 */
void func3(int a) { ... }
int func3(int a) { ... }
#include <iostream>
int func(int a = 10) { return a + 1; }
int main(void) {
func(); // 11
func(20); // 21
return 0;
}
#include <iostream>
int func(int a = 10, int b = 20);
int main(void) {
func(5, 10);
return 0;
}
함수 선언을 별도로 할 때에는 함수 선언부에만 디폴트값 지정해야 함.
컴파일러가 함수의 디폴트값의 지정 여부를 알아야 함수 호출 문장을 적절히 컴파일 할 수 있기 때문.
/* 부분적 디폴트값 설정 성립 예시 */
int func(int a, int b, int c = 30);
int func(int a, int b = 20, int c = 30);
int func(int a = 10, int b = 20, int c = 30);
/* 부분적 디폴트값 설정 성립X 예시 */
int func(int a = 10, int b, int c);
매개변수 일부에만 디폴트값 지정하려면 오른쪽부터 지정해야 함.
인자는 왼쪽부터 채워지기 때문.
/* 매크로 함수 예시 */
#include <iostream>
#define SQUARE(x) ((x)*(x))
int main(void) {
std::cout << SQUARE(5) << std::endl; // 25
return 0;
}
/* 인라인 함수 예시 */
#include <iostream>
inline int SQUARE(int x) return x*x;
int main(void) {
std::cout << SQUARE(5) << std::endl; // 25
return 0;
}
인라인 선언은 컴파일러에서 처리됨. 따라서 컴파일러가 함수의 인라인화를 결정.
매크로 함수와 달리 자료형에 독립적이지 않음.
/* 이름공간 사용 예시 */
#include <iostream>
namespace Space1 {
void func(void) {
std::cout << "Space1" << std::endl;
}
}
namespace Space2 {
void func(void) {
std::cout << "Space2" << std::endl;
}
}
namespace Space3 {
void func(void);
}
int main(void) {
Space1::func();
Space2::func();
Space3::func();
return 0;
}
void Space3::func(void) {
std::cout << "Space3" << std::endl;
}
선언만 먼저 해놓을 수 있다.
/* using 사용 예시 */
#include <iostream>
using std::cout;
using std::endl;
int main(void) {
cout << "Hello World!" << endl;
}
/* using 사용 예시 2 */
#include <iostream>
using namespace std;
int main(void) {
cout << "Hello World!" << endl;
}
/* 지역변수, 전역변수 예시 */
#include <iostream>
int val = 100;
int func(void) {
int val = 50;
std::cout << val << std::endl; // 50
std::cout << ::val << std::endl; // 100;
}
그래픽스를 공부하기에 앞서 C++부터 공부하는 게 좋을 것 같아서 강의를 듣기 시작했다.
11월 중순까지 강의를 다 듣는 걸 목표로! 🔥