C++ 공부정리 - 시작
시작하기 전에
C++은 객체지향언어로써 절차지향 언어인 C와 많은 차이점을 가진다.
C++에 대한 학습을 시작하기 앞서서, 다른 언어들과의 차이점과 C언어와의 차이점을 따로 다루어보고 넘어가고자 한다.
지금은 몇 개 다루지 않지만, 앞으로도 계속 다루어볼 예정이다.
또한 이 C++은 프로그래밍 언어에 대한 특성을 어느정도 알고 있다는 전제하에 작성한다.
1. 모든 언어는 main 함수가 있으며 이것이 실행되면서 동작한다.
파이썬이나 자바스크립트에는 main함수가 없는데, 어디까지나 보이지 않는 것일 뿐 구조상으론 존재한다.
main 함수는 운영체제가 호출한다.
2. C에서는 함수를 정의할 때, 지역변수가 가장 위에 있어야 했지만 C++에서는 그러지 않아도 된다.
단, 새로운 표준에서는 C 또한 지역변수 위치에 제한을 두진 않는다.
그러나 많은 컴파일러가 이를 허용하지 않는다.
3. C에서는 함수를 찾을 때, 함수 이름으로 찾는다.
C++과 C의 차이점으로, 이 특징 때문에, C에서는 같은 이름을 가진 다른 함수를 쓰는 행위, 즉 오버로딩이 불가능하다.
하지만 C++에서는 파라미터에서 차이점을 두면 같은 이름의 함수도 사용할 수 있다.
함수를 구분하는 조건은 C에서는 함수 이름이 전부지만,
C++에선 함수 이름, 파라미터의 타입, 파라미터의 갯수로 구분한다.
단, 출력 타입(리턴값의 타입)은 함수 구분 조건이 아니다.
로그 출력
c++에는 다소 이질적인 문법으로 로그 출력을 작성한다.
참고로 그냥 C에서 하던 방식 그대로 해도 되지만 여기선 C++에서만 가능한 방식으로 작성한다.
#include <iostream>
int main() {
std::cout << "Hello World!" << std::endl;
return 0;
}
std::가 로그 관련명령인데 여기서 cout는 출력을 말한다.
그리고 endl이 줄 바꿈을 의미한다.
꺽쇠는 해당 방향으로 데이터를 넣어준다는 느낌으로 이해하면 편하다.
로그 입력
입력 또한 C에서 하던 방식대로 해도 된다.
하지만 여기서는 C++ 방식대로 실행한다.
아래 함수는 숫자 두 개를 입력 받아 서로 더한 값을 출력하는 함수다.
int main()
{
int val1;
std::cout << "첫 번째 숫자입력: ";
std::cin >> val1;
int val2;
std::cout << "두 번째 숫자입력: ";
std::cin >> val2;
int res = val1 + val2;
std::cout << "덧셈결과: " << res << std::endl;
return 0;
}
std의 cin를 사용하는데 꺽쇠의 방향이 반대다.
마치 입력받은 값을 해당 변수에 넣으라는 모양새다.
그런데 아무리 C언어에서 하던 방식대로 해도 된다곤 하지만 C++에서 로그 입력과 출력은 상당히 이질적이다.
나머지는 다 그렇다 쳐도 왜 :: 이나 ctd, cout 등을 사용하는건지 궁금할 수 있다.
하지만 이에 대한 내용은 추후에 다루어 보겠다.