ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2024 - 01 - 16 C++ Grammar D+2
    Language Grammar/C++ 2024. 1. 16. 18:07

    * C++ 의 개선 사항

    1. 클래스의 지원

    2. 개발 방법의 차이 

    C는 구조적 프로그래밍 방식인데 비해 C++은 객체지향 프로그래밍 방식 사용

    3. 함수 중간에서 지역 변수를 선언가능

    * IOStream

    1. 입출력 스트림을 가지고 있는 헤더 

    Cin : 입력스트림

    Cout : 출력스트림 ( 기존 C와 달리 가변변수를 안써도됌 )

    * C++의 입출력스트림이 기존 C에 비해 가지고 있는 장점

    1. 사용 방법이 훨씬 더 직관적이다. 출력할때는 << 입력할때는 >> 연산자로 입력받은 값을 변수로 보내는 모양을 하고 있어 사용하기 쉽다.

    2. 입출력 객체가 데이터으 ㅣ타입을 자동으로 판별하기 때문에 서식을 일일이 기억할 필요도 없고, 서식을 잘못 적는 실수를 할 리 없어 안전함

    3. 입출력 객체의 << , >> 연산자는 여러 가지 기본 타입에 대해 중복 정의되어 있는데 필요할 경우 사용자 정의 타입을 연산자 오버로딩을 통하여 인식하도록 확장할 수 있다.

    * using namespace 

    명칭을 저장하는 기억 영억으로서 C++에 새로 추가된 기능

    C++ 표준 라이브러리는 std라는 네임 스페이스에 모두 정의되어 있으므로 std를 사용한다는 선언을 하여야함

    * new, delete 연산자

    C의 malloc 및 free에 대응되는 C++의 메모리 할당 연산자이다.

    포인터 = new 타입[(초기값)]; 으로 선언되며,

    delete의 경우 Null 포인터에 대해서는 아무런 동작도 하지 않도록 정의되어있으므로 

    if (pi != NULL) 
    {
           delete pi;
    }

    방식이 아닌

    delete pi; 로 하여도 상관없다.

    특징

    1. malloc/free는 라이브러리가 제공하는 함수인데 비해 new/delete는 언어가 제공하는 연산자이다. 그래서 별도의 헤더 파일을 포함할 필요없이 언제든지 사용할 수 있으며, 이 연산자를 쓴다하여도 프로그램이 커지는 것도 아니다. 연산자이기 때문에 사용자 정의 타입에 대해 오버로딩 할 수도 있다.

    2. malloc 함수는 필요한 메모리양을 바이트 단위로 지정하고, void *를 리턴하므로 sizeof 연산자와 캐스트 연산자의 도움을 받아야 한다. 이에 비해 new 는 할당할 타입을 지정하고 해당 타입의 포인터를리턴하므로 sizeof 연산자와 캐스트 연산자를 쓸 필요가 없다. 할당한 타입과 같은 타입의 포인터 변수로 대입만 받으면 된다.

    3. malloc은 메모리를 할당하는 것만이 목적이므로 초기값을 줄 수 없지만 new 연산자는 동적으로 생성한 변수의 초기값을 지정할 수 있다.

    4. new 연산자로 객체를 할당할 때 생성자가 자동으로 호출된다. 생성자는 생성과 동시에 객체를 초기화할 수 있도록 함으로써 클래스가 기존 타입과 동등한 자격을 가지도록 하는 중요한 역할을 한다. 생성자를 호출한다는 점이 malloc과 new의 가장 큰 차이점이다.

    5. 구조체에서 멤버 변수뿐만 아니라 멤버 함수를 포함시킬수 있다.

    멤버함수 작성법

    반환받을 데이터타입 소속구조체 :: 함수이름
    {
         함수내부
    }

    참고사이트 : http://www.soen.kr/




     





    'Language Grammar > C++' 카테고리의 다른 글

    2024 - 01 - 30 C++ Grammar D+6  (1) 2024.01.30
    2024 - 01 - 23 C++ Grammar D+5  (0) 2024.01.23
    2024 - 01 - 22 C++ Grammar D+4  (0) 2024.01.22
    2024 - 01 - 18 C++ Grammar D+3  (0) 2024.01.18
    2024 - 01 - 15 C++ Grammar D+1  (0) 2024.01.15
Designed by Tistory.