C++ 접근제어 🎯 접근제어 키워드 다시 보기 public : 모든 곳으로부터의 접근을 허용한다. protected : 자식 클래스의 멤버 함수로부터의 접근만 허용한다. private : 자신의 멤버 함수 외에는 접근할 수 없다. 🔔 예) 상속과 접근 제어 자신의 멤버 함수에서 접근 자식 클래스의 멤버 함수에서 접근 외부에서 접근 private 멤버 Yes No No protected 멤버 Yes Yes No public 멤버 Yes Yes Yes 🎯 오버로딩과 다향성 📌 오버로딩도 다형성의 한 종 류다. 하나의 이름을 사용하지만 인자에 따라서 여러가지 다른 함수들이 호출될 수 있기 때문이다. 순수 가상 함수 📌 가상 함수의 선언 뒤에 다음과 같이 ' = 0 ' 을 붙여주면 된다. virtual void..
C++ C++ 스타일의 문자열(string) 📌 C++ 스타일의 문자열이란 바로 string 이라는 이름의 클래스를 의미한다. 🔔 예) 문자열의 생성 실행 결과 🔔 예) 문자열의 복사 실행 결과 🔔 예) 문자열의 길이 실행 결과 🔔 예) 문자열의 결합과 비교 실행 결과 🔔 예) 문자열의 검색 실행 결과 🔔 예) 문자열의 일부분 얻기 실행 결과 🔔 예) C 스타일에서 C++ 스타일로의 형변환 실행 결과 🔔 예) C 스타일에서 C++ 스타일로의 형변환 – 테스트 실행 결과 🔔 예) string 객체에서 C스타일의 문자열 얻기 실행 결과 🔔 예) C++ 스타일에서 C스타일로의 변환 실행 결과 🔔 예) 간단한 문자열의 입력 실행 결과 🔔 예) getline() 함수를 사용한 문자열 입력 실행 결과 getline..
생성자 소멸자 호출 시점 Ex) 전역으로 생성된 객체의 호출 시점 Main 함수는 프로그램이 실행되는 과정에서 호출된다. 전역으로 선언된 객체는 Data 영역에 속함으로 컴파일시에 생성됨으로 main( ) 함수보다 먼저 실행된다. 실행 결과 : Ex ) 생성자와 소멸자으 호출 시점 실행 결과 : Ex ) 정적 멤버 함수를 사용한 객체의 생성 이 예제에서 중요한 것은 다음의 두 가지다. 생성자가 private인 경우에도 정적 멤버 함수에서는 객체를 생성할 수 있다. 이렇게 하려면 객체를 동적으로 생성해서 그 주소를 반환하는 수밖에 없다. 실행 결과 : This 포인터 ? 자기 자신을 가리키는 포인터 Ex) 멤버 함수에서 자기 자신을 확인..
C++ 생성자와 소멸자 🎯 생성자의 특징 반환형이 없다. 함수 이름이 클래스와 동일. 객체가 생성될 때 자동으로 호출되는 함수이다. 🔔 예) 생성자 사용 실행 결과 생성자의 순서는 생성된 순서대로 실행된다. 소멸자의 순서는 생성자의 역순이다. 🔔 예) 소멸자 사용 실행 결과 인자가 없는 생성자를 디폴트 생성자라고 한다. 소멸자는 인자가 없는 type 밖에 없다. 인자가 있는 생성자 🔔 예 ) 실행 결과 복사 생성자를 사용하지 않으면 Binary Copy 를 해준다. Point a; // 디폴트 생성자 발동 Point b = a; // copy 복사 생성자 발동 Binary 복사는 포인터를 사용할경우 소멸되면서 동적할당을 delete 시킬경우 복 사된 객체가 포인터 주소를 잃어버리게 됨으로 문제가 될 수 ..
C++ 기초 디폴트 인자 디폴트 인자는 오른쪽에 몰려 있어야 한다. 🔔 예) 디폴트 인자 사용 실행 결과 💡 오버로딩과 디폴트 인자를 동시에 사용할 경우 어느 함수를 호출해야 할지 결정할 수 없을 경우 에러로 처리된다. typedef를 사용한 함수의 포인터 정의 int AnyName(int a, int b); typedef int (*test)(int, int); 동적 메모리 할당의 기본 🔔 예) C 에서의 동적할당 p = malloc(sizeof(int) * length); C++ 에서의 동적할당 p = new int [length]; length 가 4일경우 int (4byte) * 4 = 16byte 메모리 동적할당 🔔 예) C 에서의 동적할당 int * ip; ip = malloc(sizeof(i..
C++ 기초 🔔 예) 🔔 예) 관계연산자 실행 결과 🔔 예) 정수 값을 2진수로 출력하는 방법 실행 결과 🔔 예) 레퍼런스 사용시 이런경우에는 100 을넣기 위해 4byte의 메모리 공간을 생성한다. 실행 결과 🔔 예) 서로다른 type 의 변수에 레퍼런스를 사용하면 새로운 4byte 메모리 공간을 생성하여 A의 아스키코드 65를 넣는다. 실행 결과 🔔 예) 레퍼런스를 이용한 해결 실행 결과 🔔 예) sqrt()와 pow() 함수의 사용 double sqrt_2 = sqrt(2.0); 2를 인자로 넘겨주면, 2의 제곱근을 반환한다. double pow_12_2 = pow((double)12, 2); 12의 2승, 즉 12의 제곱을 반환한다. 실행 결과 함수의 오버로딩 📌 오버로딩(Overloading)이..
최근의 소프트웨어 개발 환경은 "객체지향(Object Oriented)"의 바람을 타고 있다. 객체지향 프로그래밍, 객체지향 모델링, 객체지향 방법론 등 소프트웨어와 관련된 여러 기술들이 객체지향과 음으로 양으로 관련을 맺고 있다. 앞으로 몇 개월간 객체지향과 관련된 여러 기술들을 차례로 연재함으로써 객체지향의 체계를 정리해 보고자 한다. 앞으로 연재되는 모든 글은 아래 나열된 서적들과 컴퓨터 잡지 및 인터넷 상의 자료들을 재정리한 것임을 밝혀둔다. Grady Booch, Object-Oriented Analysis And Design With Applications, Addison Wesley, 1994 Ivar Jacobson, Object-Oriented Software Engineering, Ad..