본문 바로가기

반응형

전자 공학/C언어 C++

(33)
[C++ 독학하기] 13. 복사 생성자 안녕하세요. 취업한 공대누나입니다. 오늘은 복사 생성자에 대해 알아보도록 하겠습니다. 1. 복사 생성자란? C++에는 C언어와는 다르게 객체라는 것이 존재합니다. 객체에는 멤버 변수와 멤버 함수가 존재하지요. Copy Constructor는 말 그대로 객체의 복사본을 생성할 때 호출되는 생성자입니다. 클래스를 작성할 때 복사 생성자를 생략하면 디폴트 생성자처럼 컴파일러가 알아서 만들어 넣어줍니다. 이걸 우리는 기본 복사 생성자라고 합니다. 객체간의 변수의 값을 복사해주며 호출시키는 객체의 선언과 동시에 초기화할 때 발생합니다. 다음 시간에 더 자세히 다루겠지만 기본적으로 얕은 복사를 제공합니다. 클래스 내에서 일반 생성자는 파라미터를 다르게 해서 여러개를 둘 수 있지만 복사 생성자는 파라미터를 자기 클래..
[C++ 독학하기] 12. this 포인터 안녕하세요. 취업한 공대누나입니다. 오늘은 자기 자신을 가리키는 this포인터에 대한 공부를 해보도록 하겠습니다. 1. this 포인터 this 포인터는 클래스의 실제 인스턴스에 대한 주소를 가리키는 포인터입니다. 클래스의 멤버 함수를 호출할 때 어떻게 호출할 때에도 이 this라는 포인터를 이용해서 객체를 찾을 수 있는 것입니다. 예제를 보도록 하겠습니다. 위의 예제를 실행하면 st1의 Print_studentst1을 실행시켜야 하는 것을 알고 이를 참조하는데요. 사실 st1.Print_student()는 인수 없이 함수를 호출하는 것처럼 보입니다. 하지만 사실은 st1.Print_student(&st1)처럼 존재하고 있습니다. 이 주소가 우리 눈에는 보이지 않을 뿐 존재하고 있으며 첫 번째 매개변수로..
[C++ 독학하기] 11. 생성자와 소멸자 안녕하세요. 취업한 공대누나입니다. 지난 시간에는 클래스를 초기화 해주는 생성자에 대해 알아보았는데요. 생성자에 대한 자세한 설명은 아래 포스팅을 참고해주세요. [C++ 독학하기] 10. 생성자 오늘은 생성자와 소멸자에 대해 알아보도록 하겠습니다. 생성자와 소멸자는 클래스 객체가 생성되거나 소멸될 때 자동으로 호출되는 함수입니다. 객체가 생성되는 시점에는 생성자를 호출하고 소멸되는 시점에는 소멸자를 호출하게 됩니다. 이러한 디폴트 생성자와 소멸자는 우리가 만들지 않아도 컴파일러가 알아서 만들어 넣어줍니다. 한 번 예제를 보도록 하겠습니다. 1. 자동으로 호출되는 생성자와 소멸자 왼쪽의 위에 있는 TEST()는 생성자를 ~TEST()는 소멸자를 나타냅니다. 즉 소멸자는 클래스 이름과 같아야 하고 앞에 ~를..
[C++ 독학하기] 10. 생성자 안녕하세요. 취업한 공대누나입니다. 지난 시간에는 클래스에 대해 공부를 했었는데요. 오늘은 생성자에 대한 이야기를 해보겠습니다. 1. 생성자 (Constructor)란? 클래스를 정의한 후 객체를 생성하게 되면 메모리에 할당이 되게 됩니다. 이 때 멤버 변수들은 초기화되지 않은 상태라서 사용할 수가 없는데요. C++에서는 객체의 생성과 동시에 멤버 변수를 초기화 해주는 생성자 함수가 있습니다. 우리는 이러한 생성자를 이용해서 보다 쉽게 객체를 선언하고 사용할 수 있습니다. 생성자는 일반적으로 클래스의 멤버 변수를 적절한 기본값 또는 사용자 제공 값으로 초기화 할 때 사용합니다. 또한 외부에서 클래스를 생성함과 동시에 사용해야 하므로 public 영역에 만들어야 합니다. 생성자를 이용하는 함수에는 중요한 ..
[C++ 독학하기] 8. 인라인 함수 개념 안녕하세요. 취업한 공대누나입니다. 요즘은 C++에 대한 공부를 계속해서 해나가고 있는데요. 오늘은 인라인 함수에 대해서 공부해보도록 하겠습니다. 1. 인라인(Inline) 함수란? 일반적으로 함수를 호출하면 메모리 사용이 증가하고 매개변수 때문에 메모리 복사가 일어나며 제어 흐름도 이동해야 합니다. 눈에 보이지는 않아도 내부적으로는 여러 연산들이 일어나고 있는 것입니다. 복잡한 함수의 경우 함수를 호출할 때 생기는 오버헤드가 크게 중요하지 않지만 간단한 함수의 경우 함수 호출에 필요한 시간이 함수를 실행하는데 필요한 시간보다 더 긴 경우가 있습니다. 보통 이러한 오버헤드들을 줄이기 위해서 매크로를 사용합니다. 하지만 매크로는 함수가 아니기 때문에 논리적 오류를 발생시킬 수 있으며 매개변수 형식을 지정할..
[C++ 독학하기] 7. 함수 다중 정의, 오버로딩 개념 안녕하세요. 취업한 공대누나입니다. 오늘은 C++의 또다른 특징 중 하나인 오버로딩 개념에 대해서 알아보도록 하겠습니다. 헷갈릴수도 있지만 천천히 보시면 어려운 개념이 아닌 것을 알게 되실 겁니다. 시작하겠습니다. 1. 오버로딩(Overloading)이란? 함수 다중 정의라고도 말합니다. 이름 그대로 나타나 있듯이 여러 의미를 동시에 갖는 것을 말합니다. C에서는 이름이 같은 함수가 존재할 수 없었는데요. C++에서는 매개변수의 갯수가 달라지거나 하면 이름이 같아도 다른 함수로 인식이 됩니다. 이것을 C++는 함수의 다형성을 지원한다고도 말합니다. 예제를 통해 보도록 하겠습니다. 2. 예제 소스코드 저는 왼쪽과 같이 Add_test라는 함수를 세 가지 형태로 다중 정의를 해보았습니다. 가장 위쪽의 Add..
[C++ 독학하기] 6. 디폴트 매개변수란? 안녕하세요. 취업한 공대누나입니다. 오늘은 디폴트 매개변수의 개념에 대해서 알아보고 소스 코드에서 차근차근 보도록 하겠습니다. 1. 디폴트 매개변수 우리 함수에 대해 공부를 할 때 함수를 호출하던 부분을 기억하시나요? 함수를 호출하기 위해서는 매개변수의 값을 적어야 합니다. 예를 들어서 Add(1,2);와 같은 형식으로 말이죠. 하지만 C++의 경우 디폴트 매개변수라는 개념이 있습니다. 아래 소스부터 보도록 하겠습니다. default_test라는 함수의 test라는 매개변수의 초기값이 100임을 알 수 있습니다. 이 함수는 해당 매개변수를 그대로 리턴을 하는 함수입니다. 첫번재 출력 구문을 보면 실인수를 생략한 것을 볼 수 있습니다. 결과창에는 디폴트 값인 100이 그대로 출력되게 됩니다. 즉 이와 같이..
[C++ 독학하기] 5. 범위 기반 for문 안녕하세요. 취업한 공대누나입니다. 오늘은 C++에 새로 생긴 범위 기반 for문에 대해서 공부를 해보도록 하겠습니다. 저도 처음 접해보는 것이라 정말 새로운 문법이었는데요. 우리가 일반적으로 쓰던 for문과는 무엇이 다른지 살펴보도록 하겠습니다. 1. 범위 기반 for문 예전에 for문에 대해 배운것을 기억하시나요? for문은 대부분 일정 '횟수'를 중심으로 반복을 하게 됩니다. 따라서 보통 배열 자료구조에 접근할 때 for문을 자주 사용하게 되는데 이는 배열의 요소가 선언할 때 확정되기 때문입니다. 그런데 만약 배열 요소의 개수를 변경해야 한다면 for문도 수정을 해야합니다. 하지만 범위 기반 for문으로 작성을 하게 되면 그럴 필요가 없습니다. 범위 기반 for문은 C++11에서 공식적으로 추가되었..

반응형