2019/10/17
4C++ 멤버 초기자 리스트(member initializer list)
C++에서는 상수인 클래스 멤버를 초기화시키기 위하여 특별한 문법을 제공합니다. 문제 상황 및 해결 일반적으로 상수인 클래스 멤버를 생성자를 통하여 초기화시키지 못합니다. 그래서 생성자의 코드 실행전인 객체가 생성될 때 초기화해야 합니다. #include class Person { const int age; Person(int p_age) { age = p_age; //허용안됨 } }; int main(void) { } 위에 방법으로는 상수인 클래스 멤버를 초기화할 수 없습니다. 그래서 나온게 멤버 초기자 리스트입니다. #include class Person { const int age; Person(int p_age) : age(p_age){//허용됨 } }; int main(void) { } 위와 같..
프로그래밍/C++ 2019.10.17 PlorenceC++ new 연산자와 delete 연산자
new, delete연산자는 동적 할당과 해제에 연관되어 있으며 C++에서 제공하는 방법입니다. C언어에서는 malloc함수와 free함수를 통해서 동적 할당과 해제가 가능했었습니다. 동적 할당의 필요성 동적 할당은 미리 할당할 필요도 없으며, 원하는 크기를 정확히 할당이 가능하므로 쓸모없는 크기를 잡아먹지 않게 됩니다. 만약 계속 문자열을 입력받고 계산해야하는데 입력받은 문자열의 크기는 10~10000이라고 가정합시다. 동적 할당을 하지 않을 경우 정적 할당(지역변수)으로 최대 문자열의 크기인 10000을 잡고 미리 할당해야 합니다.(이런 경우 입력 문자열이 10이라면 필요 없는 메모리 공간이 9990이나 됩니다.) 하지만 동적할당은 입력받은 문자열의 크기를 구해서, 그 크기만큼 동적 할당하게 되면 필..
프로그래밍/C++ 2019.10.17 PlorenceC++ 복사 생성자(Copy Constructor)
복사 생성자는 어떤 객체를 새로 생성되는 객체에 복사하는 데 사용됩니다. 복사 생성자는 일반적인 대입에 사용되는 것이 아니라 값 전달에 의한 함수 매개변수 전달을 포함한 초기화 작업에 사용됩니다. 복사 생성자의 원형 ClassName(const ClassName &); 복사 생성자의 호출 시기 복사 생성자는 새로운 객체가 생성되어 같은 종류의 기존 객체로 초기화될 때마다 호출됩니다. 복사 생성자의 호출 시기는 아래의 코드와 같습니다. Person Carl(); Person Plorence(Carl); //복사 생성자 호출 Person Plorence =Carl; //복사 생성자 호출 Person Plorence = Person(Carl); //복사 생성자 호출 Person * Plorence = new ..
프로그래밍/C++ 2019.10.17 PlorenceC++ 자동변환과 클래스의 자료형 변환(변환 함수)
C++은 표준 자료형의 값이 다른 표준 자료형과 호환이 될 때 암시적 형 변환이 이루어집니다. 반면에 호환되지 않은 자료형은 변환하지 않습니다. 자동으로 자료형이 변환되지 않는 경우에 명시적 형변환을 이용하면 해결할 수 있습니다. int * ptr = (int*)10; 기본 자료형이나 다른 어떤 클래스와 충분히 관련되어 있어, 서로 간에 변환할 수 있는 클래스를 정의할 수 있습니다. 그러한 경우에, 자동 변환을 할 것인지 강제 변환을 할 것인지 사용자가 C++에게 지시할 수 있습니다. C++에서 하나의 매개변수를 취하는 생성자는 그 매개변수 데이터형의 값을 클래스형으로 변환하는 설계도처럼 동작합니다. Person(int p_age); 위 생성자는 int형 값을 Person형 값으로 변환하는 구문 역할을 ..
프로그래밍/C++ 2019.10.17 Plorence