c++언어 7

C++ 공부하기 - 7.new&delete

이 내용은 저번에 포스팅 하려고 했습니다만... 제가 malloc&free의 개념이 모호해져서 다시 공부하고 오느라 조금 늦었습니다. 우선 C언어에서의 malloc&free는 동적할당을 함으로 정적할당보다 더 효율적으로 메모리를 사용할 수 있었습니다. 이 개념이 C++에서도 똑같이 적용되어 넘어왔으나 malloc&free의 단점인 할당 대상의 정보를 무조건 바이트로 받는다는 점 반환형이 void이기 때문에 적절한 형변환을 거쳐야한다는 점 이 두가지의 단점을 가지지 않은 다른 함수로 대체하여 나온 함수입니다. 이 함수가 바로 new&free 입니다. 그러면 저 두가지의 단점을 극복했다면 어떻게 극복했고 뭐가 더 좋기 때문에 C++에서 쓰이는지 알아보겠습니다. 우선 malloc을 대체한 키워드 new는 in..

C++ 공부하기 - 6.참조자와 함수

저번 시간에 이어서 참조자에 대해서 공부하겠습니다. 참조자란 마치 별칭을 달아주는 것과 같이 쓰인다고 했습니다. 그러면 그 참조자를 함수에서는 어떻게 쓰는지 알아보겠습니다. C언어에서 배운 함수 호출 종류로는 우선 Call-by-value가 있었고 다음으로 Call-by-reference(address)가 있었습니다. 포인터를 공부할 때 익히셨을꺼라 생각합니다. 간략하게 풀이해보면 Call-by-value는 값을 인자로 전달하는 함수 호출 방식이며 Call-by-reference는 주소 값을 인자로 전달하는 함수의 호출방식입니다. 차이점을 명확이 할려면 간단한 함수로 보는게 빠릅니다. void Swap(int num1, int num2) { int temp = num1; num1 = num2; num2 ..

C++ 공부하기 - 5.참조자(Reference)

참조자라는 것은 아마도 포인터에서 많이 들어보셨을겁니다. 하지만 이 참조자는 포인터와는 별개의 개념이니 굳이 포인터를 떠올리시지 않으셔도 됩니다. 변수란 할당된 메로리 공간에 붙여진 이름이고 그 이름을 통해서 호출하게 됩니다. 그렇다면 하나의 메모리 공간에 두 개 이상의 이름이 붙을 수 있을까요? 두 개 이상의 이름을 붙이는게 바로 참조자입니다. i라는 변수가 선언됬다고 가정해보면 i는 메모리에 일정 공간을 할당받으며 i라는 이름으로 접근이 가능합니다. 거기다 int &j = i; 라고 선언하면 i의 메모리 공간에 이름이 i와 j가 선언되는겁니다. (※ &는 주소 값을 반환해주는 연산자지만 이렇게 새로 선언하는 변수 앞에 오게 되면 참조자 선언을 뜻합니다. 이미 선언된 변수앞에 오면 주소 값을 반한합니다..

C++ 공부하기 - 4.이름공간(namespace)

오늘 배울 내용은 이름공간(namespace)입니다. 이러한 이름공간이 필요한 이유부터 말씀드리겠습니다. 프로그램이 커지면서 코드도 점점 복잡하면서 대형화 되어갑니다. 그러다보니 개발자들이 서로 다른 부분을 맡아서 개발하게 됩니다. 모듈화해서 어디는 다리 어디는 몸통 어디는 팔 어디는 머리, 이런식으로 개발해서 나중에 조립을 한 셈이죠. 이런 개발 방식에서 큰 문제점이 생깁니다. 바로 함수의 이름이 겹치는 겁니다. 함수 이름이 같다보니 계속 코드는 충돌이나고 그렇다고 이미 쓴 코드에서 누가 뭘 바꾸고 누구는 안바꾸고 이런 문제가 발생할 수 있어서 미연에 방지하기 위해 생긴 것이 바로 이름공간(namespace)입니다. 이러한 이름공간의 기본적인 원리는 마치 원산지를 지정한 것과 같은 원리입니다. 같은 함..

C++ 공부하기 - 3.인라인 함수

오늘 배워볼 내용은 인라인(inline)함수 대해서 공부하겠습니다. (여러분이 이미 C언어를 어느정도 익히셨겠지만 만약 까먹으셧다면 다시 보고오시거나 제 블로그 C언어 공부하기에서 보고오셔도 됩니다. 매크로 함수 바로가기 C언어에서 매크로함수에 대해 배우셨을 꺼에요. 매크로 함수의 장단점을 비교해보겠습니다. 장점 단점 전처리기를 통해 실행 속도가 빠르다 복잡한 함수를 매크로 함수로 정의하기 어렵다 코드의 가독성이 높아진다 증감 연산자 사용시 중첩된 결과로 잘못된 결과가 나온다 코드의 수정이 용이하다 " " 안의 내용은 적용이 안되서 #(문자열 변환 연산자)를 사용해야 한다 이런 매크로 함수가 전처리 과정을 거치면 함수의 몸체 부분이 함수의 호출문을 대신하게 된다. 위와 같은 형식으로 대체하게 되고 이렇게..

C++ 공부하기 - 2.함수의 오버로딩와 매개변수의 디폴트 값

오늘 배워볼 내용은 C++의 오버로딩과 매개변수의 디폴트 값에 대해서 공부하겠습니다. 우선 C언어를 공부하면서는 오버로딩이라는 것을 배우지 않습니다. 이유는 C언어에서는 오버로딩이 불가능하기 때문입니다 이 오버로딩은 동일한 이름의 함수가 정의되는것을 뜻합니다. 다만 매개변수가 다르지요. C언어에서 오버로딩이 불가능한 이유는 우선 C++과 C언어는 호출할 함수를 찾을 때 방법이 다르기 때문입니다. C언어는 함수의 이름으로 C++은 함수의 이름과 매개변수의 선언 이 두가지를 보고 찾기 때문에 오버로딩이 가능한 이유입니다. 그럼 한번 테스트를 해보겠습니다. #include int Add(int a,int b); int Add(int a,int b, int c); int main(void) { int a,b,c..

C++ 공부하기 - 1.C++의 입출력

C++은 C언어를 포함한다? 라고 말할 수 있습니다. 그렇기에 C언어로 작성된 대부분의 프로그램은 C++ 컴파일러로 컴파일이 가능하기도 하지요 허나 C++은 C언어가 가지고 있지 않는 객체 지향적 특징등이 있습니다. 처음 배우는 만큼 간단한 입출력에 대해서 배워보겠습니다. 처음 C언어를 배울 때 Hello World! 를 출력했었습니다. 기억 하시나요? 그래서 C++에서도 Hello World!를 출력해보겠습니다. #include int main(void) { std::cout