Language/C++

C++ 공부정리 - 시작

Tarel 2023. 3. 21. 17:15

시작하기 전에

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 등을 사용하는건지 궁금할 수 있다.

 

하지만 이에 대한 내용은 추후에 다루어 보겠다.