C언어와 C++의 차이점

sz L·2023년 8월 13일
0

C++

목록 보기
37/40
post-thumbnail

C언어와 C++의 차이점은 절차지향과 객체지향에 있다 !

C언어

절차지향 언어로 순차적인 처리가 중요함.
프로그램 전체가 유기적으로 연결됨.
정해진 순서에 따라 실행되기 때문에 실행 흐름을 이해하기 쉽다.
오버로딩을 지원하지 않음
namespace 개념 사용
클래스의 개념을 사용


C++

객체지향 언어로 구조화된 프로그램을 짤 수 있다.
같은 목적이나 기능을 하는 변수나 함수를 하나로 묶어 객체로 만들고 이를 이용해 프로그램 전체가 작동하도록 코드 구성.
한 부분이 잘못 동작할 경우 그 부분만 수정하면 해결 가능.
처리속도가 절차지향보다 느리고 설계에 많은 시간이 소요됨.
코드의 재사용성이 높음
오버로딩 지원


오버로딩

C언어에선 함수명이 고유하게 존재해야 함. 즉 하나의 함수가 하나의 기능만을 구현해야함

C++에서는 메소드의 이름이 같고, 매개변수의 개수나 타입이 다르면 함수 이름이 같아도 다른 함수. 즉 함수 이름은 같으나 다른 함수임

함수 오버로딩 정리한 내용


namespace

C언어에선 식별자의 이름은 같을 수 없다고 배우지만, C++에서는 식별자의 이름이 같을 수 있음.
코드 내에서 사용한 식별자가 어떤 네임스페이스에 있는 식별자인지 코드에서 알려준다면 명확하게 구분이 되게 된다.


절차지향

순차적인 처리가 중요시되며 프로그랜 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법

  • 컴퓨터의 처리구조와 유사해 실행 속도가 빠름
  • 어려운 유지보수와 디버깅
  • 실행 순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어려움

객체지향

데이터와 절차를 하나의 덩어리로 묶어서 생각함

  • 소프트웨어 언어의 발달과 컴파일러의 발달로 하드웨어가 소프트웨어의 발달을 따라오지 못하는 상황이 발생하자 객체지향언어가 탄생함
  • 모듈화를 함으로써 하드웨어가 같은 기능을 중복으로 연산하지 않고, 모듈을 재활용하기 때문에 하드웨어의 처리량을 획기적으로 줄여줌
  • 하나의 기능만 필요하더라도 모듈 전체를 가져와야 하기 때문에 절차 지향 프로그래밍보다 프로그램 사이즈가 더 커질 수 있다.
  • 메소드를 통해서만 접근 가능해서 절차지향의 함수 접근처럼 접근 어렵 -> 속도적인 부분에서 불이익

    객체지향 (Object Oriented Programming) 특징

    1. 캡슐화(Encapsulation)
      	- 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것으로 객체의 본질적 특징
        필드 : 물체의 상태 -> String name, Int age 등
        메소드 : 물체의 행동 -> void go();, void Back(); 등
    2. 상속(Inheritance)
    	- 상위 개체의 속성을 하위 개체에 물려줘 하위 개체가 상위 개체를 모두 가지는 관계
        - 슈퍼클래스에 만들어진 필드와 메소드를 물려받음으로써 코드의 중복 작성을 방지하고, 코드를 재사용함으로써 코드 작성에 드는 시간과 비용 줄여줌
    3. 다형성(Polymorphism)
    	- 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 구현됨
        - 메소드 오버라이딩 : 슈퍼 클래스에 구현된 메소드를, 서브 클래스에서 자신의 특징에 맞게 동일한 이름으로 다시 구현함
        - 메소드 오버로딩 : 클래스 내에서 같은 이름의 메소드를 여러개 만듦

profile
가랑비는 맞는다 하지만 폭풍은 내 것이야

0개의 댓글