-
Notifications
You must be signed in to change notification settings - Fork 0
1주차. c와 cpp
tacoya03 edited this page Apr 9, 2025
·
1 revision
- C: 절차지향 프로그래밍(Procedural Programming)
- C++: 객체지향 프로그래밍(Object-Oriented Programming, OOP) + 절차지향도 가능
➡️C는 함수 중심의 프로그래밍을 하고, C++은 클래스를 활용한 객체지향 프로그래밍을 지원.
-
C: 구조체(
struct)를 지원하지만, 멤버 함수나 캡슐화 같은 개념 없음. -
C++: 클래스(
class)를 지원하며, 객체지향 개념(캡슐화, 상속, 다형성 등)을 적용할 수 있음.
-
C:
malloc(),free()함수를 사용하여 동적 메모리 할당/해제. -
C++:
new,delete연산자를 제공하여 더 간편하게 메모리 관리.
- C: 함수 오버로딩, 연산자 오버로딩 지원 안 함.
- C++: 같은 이름의 함수를 매개변수만 다르게 정의할 수 있음(함수 오버로딩), 연산자를 직접 정의 가능(연산자 오버로딩).
C 코드 (함수 오버로딩 불가능)
#include <stdio.h>
// 같은 이름의 함수 두 개를 정의하면 컴파일 오류 발생!
// int add(int a, int b) { return a + b; }
// double add(double a, double b) { return a + b; }
int main() {
printf("C에서는 함수 오버로딩이 불가능합니다.\n");
return 0;
}C++ 코드 (함수 오버로딩 가능)
#include <iostream>
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
int main() {
std::cout << "정수 덧셈: " << add(3, 5) << std::endl;
std::cout << "실수 덧셈: " << add(2.5, 3.7) << std::endl;
return 0;
}-
C:
stdio.h,stdlib.h등의 C 표준 라이브러리 사용. -
C++: C 표준 라이브러리도 사용 가능하지만,
iostream,vector,string등의 STL(Standard Template Library) 사용 가능.
-
C:
printf(),scanf()사용. -
C++:
cout,cin사용.
C 코드 (stdio.h 사용)
#include <stdio.h>
int main() {
int num;
printf("숫자를 입력하세요: ");
scanf("%d", &num);
printf("입력한 숫자는: %d\n", num);
return 0;
}C++ 코드 (iostream 사용)
#include <iostream>
int main() {
int num;
std::cout << "숫자를 입력하세요: ";
std::cin >> num;
std::cout << "입력한 숫자는: " << num << std::endl;
return 0;
}- C: 네임스페이스 없음.
-
C++:
namespace를 지원하여 충돌 방지 가능.
-
C:
setjmp(),longjmp()를 이용한 제한적인 예외 처리. -
C++:
try-catch문법을 활용한 예외 처리 지원.
- C는 속도가 중요하고 하드웨어 친화적인 프로그램(운영체제, 임베디드 등)에 적합.
- C++은 객체지향적인 설계를 활용할 수 있는 복잡한 소프트웨어 개발(게임, GUI, 대형 애플리케이션 등)에 적합.
| c | c++ | |
|---|---|---|
| 공통점 | c언어를 토대로 만들어진 언어기 때문에 | 코드의 기본이 되는 구조가 유사하다 |
| 주로 사용되는 분야 | 시스템 프로그래밍(OS), 임베디드 프로그래밍 | 고성능 게임 프로그래밍, 서버프로그래밍 |
| 출력 방식 | 함수를 사용함 | 객체를 사용함 |