우측 주석 값은 현재 생성한 변수에 대한 설명
int num1 = 111; // int를 가리키고 있는 변수
int* ptr1 = &num1; // (int를 가리키고 있는 변수)의 주소를 가리키는 포인터
int& ref1 = num1; // (int를 가리키고 있는 변수)의 다른 이름
int& ref2 = *ptr1; // ((int를 가리키고 있는 변수)의 주소를 가리키는 포인터가 지정하는 변수)의 다른 이름
int* ptr2 = &ref1; // ((int를 가리키고 있는 변수)의 다른 이름)의 주소를 가리키는 포인터
int* (&ref3) = ptr1; // ((int를 가리키고 있는 변수)의 주소를 가리키는 포인터)의 다른 이름
우측 주석 값은 현재 출력하고자 하는 값
cout << &num1 << endl; // (int를 가리키고 있는 변수)의 주소는? (= 0x10이라 가정)
cout << ptr1 << endl; // ((int를 가리키고 있는 변수)의 주소를 가리키는 포인터)의 값은? = 0x10
cout << &ptr1 << endl; // ((int를 가리키고 있는 변수)를 가리키는 포인터)의 주소는? (= 0x20이라 가정)
cout << &ref1 << endl; // ((int를 가리키고 있는 변수)의 다른 이름) 주소는? = 0x10
cout << &ref2 << endl; // (((int를 가리키고 있는 변수)의 주소를 가리키는 포인터가 지정하는 변수)의 다른 이름)의 주소는? = 0x10
cout << *ref3 << endl; // (((int를 가리키고 있는 변수)의 주소를 가리키는 포인터)의 다른 이름)이 가리키는 값은? = 111
cout << ref3 << endl; // (((int를 가리키고 있는 변수)의 주소를 가리키는 포인터)의 다른 이름)의 값은? = 0x10
cout << &ref3 << endl; // (((int를 가리키고 있는 변수)의 주소를 가리키는 포인터)의 다른 이름)의 주소는? = 0x20
순수 가상 클래스에 일반 메서드, 가상 메서드를 포함시킬 수 있나?
있다. 다만 순수 가상 함수가 포함되어 있기 때문에 인스턴스화 할 수 없다. 따라서 이러한 메서드 등을 전부 구현한 파생 클래스를 구현하고, 여기에 대한 참조형식으로 접근, 혹은 메서드를 지정하여 호출할 수는 있다.