C++/ 생성자, 기본 생성자, 복사 생성자
·
C++/개인 공부
생성자생성하자마자 초기화를 해준다. 객체 생성시 자동으로 호출된다.디폴트 생성자class Date{ ~~~ ~~~}int main(void){ Date day;}Date의 생성자를 명시하지 않아도, 생성자를 클래스내에 정의하지 않아도, 기본 생성자가 호출된다. → 컴파일러가 자동으로 추가해줌생성자 오버로딩생성자로 인자를 다르게 해서, 생성시 초기화할때 어떤 생성자를 사용할 것인지 선택할 수 있다.Date day; //기본 생성자 호출Date day2 = Date(); //기본 생성자 호출Date day3(1, 11, 111); //사용자 정의 생성자 호출Date day4 = Date(2, 22, 222); //사용자 정의 생성자 호출Date day2(); //XXX 이렇게 하면 안됨.동적..
C++/참조자(레퍼런스)
·
C++/개인 공부
참조자(레퍼런스)C는 포인터만 사용할 수 있었지만, C++은 포인터뿐 아니라, 참조자(reference)방식도 제공한다.int a = 3;int& a_ref = a; //a_ref변수는 변수a의 참조자다.cout 포인터와 레퍼런스는 비슷해 보이지만, 몇가지 차이점이 있다.1. 레퍼런스는 선언과 동시에 초기화 해야한다.포인터는 선언만 먼저 해도됨2. 한번 별명이 지정되면 별명을 바꿀 수 없다.포인터는 가리키던 주소를 바꿀 수 있음3. 메모리상에 존재하지 않을 수 있다.포인터는 일종의 변수이기 때문에, 메모리상에 존재함int a;int& a_ref = a; //a_ref는 변수 a의 레퍼런스이다.이 경우에는, 컴파일러가 a_ref가 쓰이는 메모리공간을 모두 a가 사용하는 메모리 공간으로 대체한다.int x ..
가상 함수와 오버라이딩
·
C++/개인 공부
가상 함수와 오버라이딩 오버라이딩이란 파생 클래스에서 기본 클래스에 작성된 가상함수를 재작성하여, 기본 클래스의 가상 함수를 무력화 시키는 것이다. 기본 클래스 포인터를 사용하든, 파생 클래스 포인터를 사용하든 파생 클래스에 오버라이딩된 함수가 항상 실행된다. 오버라이딩시에 virtual 키워드를 사용하는데, 이는 자신의 호출바인딩을 실행시간까지 미루도록 지시한다. 함수 재정의와 다르다! 함수 재정의는 컴파일 시간 다형성을 실현하고, 오버라이딩은 실행 시간 다형성을 실현한다. 오버라이딩 사례 #include using namespace std; class Base { public: virtual void f() { cout