C언어와 C++의 차이점은 절차지향과 객체지향에 있다 !
절차지향 언어로 순차적인 처리가 중요함.
프로그램 전체가 유기적으로 연결됨.
정해진 순서에 따라 실행되기 때문에 실행 흐름을 이해하기 쉽다.
오버로딩을 지원하지 않음
namespace 개념 사용
클래스의 개념을 사용
객체지향 언어로 구조화된 프로그램을 짤 수 있다.
같은 목적이나 기능을 하는 변수나 함수를 하나로 묶어 객체로 만들고 이를 이용해 프로그램 전체가 작동하도록 코드 구성.
한 부분이 잘못 동작할 경우 그 부분만 수정하면 해결 가능.
처리속도가 절차지향보다 느리고 설계에 많은 시간이 소요됨.
코드의 재사용성이 높음
오버로딩 지원
C언어에선 함수명이 고유하게 존재해야 함. 즉 하나의 함수가 하나의 기능만을 구현해야함
C++에서는 메소드의 이름이 같고, 매개변수의 개수나 타입이 다르면 함수 이름이 같아도 다른 함수. 즉 함수 이름은 같으나 다른 함수임
C언어에선 식별자의 이름은 같을 수 없다고 배우지만, C++에서는 식별자의 이름이 같을 수 있음.
코드 내에서 사용한 식별자가 어떤 네임스페이스에 있는 식별자인지 코드에서 알려준다면 명확하게 구분이 되게 된다.
순차적인 처리가 중요시되며 프로그랜 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법
데이터와 절차를 하나의 덩어리로 묶어서 생각함
객체지향 (Object Oriented Programming) 특징
1. 캡슐화(Encapsulation) - 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것으로 객체의 본질적 특징 필드 : 물체의 상태 -> String name, Int age 등 메소드 : 물체의 행동 -> void go();, void Back(); 등 2. 상속(Inheritance) - 상위 개체의 속성을 하위 개체에 물려줘 하위 개체가 상위 개체를 모두 가지는 관계 - 슈퍼클래스에 만들어진 필드와 메소드를 물려받음으로써 코드의 중복 작성을 방지하고, 코드를 재사용함으로써 코드 작성에 드는 시간과 비용 줄여줌 3. 다형성(Polymorphism) - 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 구현됨 - 메소드 오버라이딩 : 슈퍼 클래스에 구현된 메소드를, 서브 클래스에서 자신의 특징에 맞게 동일한 이름으로 다시 구현함 - 메소드 오버로딩 : 클래스 내에서 같은 이름의 메소드를 여러개 만듦