Skip to content

1주차. c와 cpp

tacoya03 edited this page Apr 9, 2025 · 1 revision

c vs c++의 차이 정리

1️⃣프로그래밍 패러다임

  • C: 절차지향 프로그래밍(Procedural Programming)
  • C++: 객체지향 프로그래밍(Object-Oriented Programming, OOP) + 절차지향도 가능

➡️C는 함수 중심의 프로그래밍을 하고, C++은 클래스를 활용한 객체지향 프로그래밍을 지원.


2️⃣클래스와 객체 지원 여부

  • C: 구조체(struct)를 지원하지만, 멤버 함수나 캡슐화 같은 개념 없음.
  • C++: 클래스(class)를 지원하며, 객체지향 개념(캡슐화, 상속, 다형성 등)을 적용할 수 있음.

3️⃣ 메모리 관리

  • C: malloc(), free() 함수를 사용하여 동적 메모리 할당/해제.
  • C++: new, delete 연산자를 제공하여 더 간편하게 메모리 관리.

4️⃣함수 오버로딩 및 연산자 오버로딩

  • 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;
}

5️⃣표준 라이브러리

  • C: stdio.h, stdlib.h 등의 C 표준 라이브러리 사용.
  • C++: C 표준 라이브러리도 사용 가능하지만, iostream, vector, string 등의 STL(Standard Template Library) 사용 가능.

6️⃣입출력 방식

  • 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;
}

7️⃣네임스페이스 지원

  • C: 네임스페이스 없음.
  • C++: namespace를 지원하여 충돌 방지 가능.

8️⃣예외 처리

  • C: setjmp(), longjmp()를 이용한 제한적인 예외 처리.
  • C++: try-catch 문법을 활용한 예외 처리 지원.



📍정리

  • C는 속도가 중요하고 하드웨어 친화적인 프로그램(운영체제, 임베디드 등)에 적합.
  • C++은 객체지향적인 설계를 활용할 수 있는 복잡한 소프트웨어 개발(게임, GUI, 대형 애플리케이션 등)에 적합.
c c++
공통점 c언어를 토대로 만들어진 언어기 때문에 코드의 기본이 되는 구조가 유사하다
주로 사용되는 분야 시스템 프로그래밍(OS), 임베디드 프로그래밍 고성능 게임 프로그래밍, 서버프로그래밍
출력 방식 함수를 사용함 객체를 사용함

Clone this wiki locally