-
2024 - 01 - 16 C++ Grammar D+2Language 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