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), 임베디드 프로그래밍 고성능 게임 프로그래밍, 서버프로그래밍
출력 방식 함수를 사용함 객체를 사용함