본문 바로가기

CPP

[C++] 상속 1. 상속 1. 부모 클래스, 자식 클래스 부모 클래스(Base 클래스=Parent 클래스=Super 클래스=Existing 클래스): 훨씬 더 추상화된 클래스 자식 클래스(Derived 클래스=Child 클래스=Sub 클래스): 부모 클래스로부터 파생되어 만들어진 새로운 클래스, 부모 클래스의 모든 멤버 데이터&멤버 함수를 가진다. 더 실체화된 클래스(specailized) 상속: '자식 클래스'가 '부모 클래스'를 '상속받았다' 고 표현함. "is-a" 관계: Derived 클래스 is a Base 클래스 (역은 성립 안됨) → 자식 클래스가 부모 클래스에 '포함 된다' (부분 집합과 유사한 개념, 자식 클래스는 부모 클래스의 모든 멤버 데이터&멤버 함수를 가지니까!) Derived 클래스의 객체는 .. 더보기
[C++] 클래스와 객체 (2) 1. 객체 전달하기 C++은 pass by value가 default임 → 메모리 복사가 많이 일어나게 되고(메모리 비효율), 프로그램의 성능과 실행 속도를 저하시킬 수 있다. *) const의 위치에 따른 의미를 잘 구분하기!! pass by reference의 효율성: 메모리 상의 위치(주솟값)를 통해 호출 객체에 접근할 수 있다. pass by ref.는 메모리 주소를 함수로 보내기 때문에 객체의 멤버 데이터들을 함수에 복사 할 필요가 없다. 함수의 입력 파라미터에 &와 const를 동시에 걸어줬을 때: 함수는 실제 입력 변수를 수정하지 않는다. (메모리 복사도 일어나지 않고 값이 아무 때나 바뀌지 않음을 보장) const 메소드: 멤버 함수의 타입을 const로 선언한다 → 해당 메소드가 멤버 변.. 더보기
[C++] 클래스와 객체 (1) 1. 객체(Software Component) = 변수 + 함수 sw component = 변수 + 그 변수를 쉽게 사용할 수 있는 함수 변수: ex) fstream안의 파일 함수: ex) 파일을 다루기 위한 동작들 (open, close 등..) 2. 클래스(class)와 오브젝트(object) 클래스: 추상화된 객체, 붕어빵 틀, 설계 도면 / ex)fstream myFile; 오브젝트: 실체화(인스턴스화) 되고 정의된 객체, 붕어빵, 건물 / ex)fstream myFile; (엄밀히 말하면) 클래스로부터 객체를 만들었다, 인스턴스를 만들었다! 객체 = 클래스의 인스턴스(실체) → 실제로 사용하는, 변수와 같은 역할 [객체]와 [인스턴스]라는 용어는 상호 교환 가능하게 사용됨. (유동적으로) 3. .. 더보기
[C++] 포인터, 벡터, 배열 (3) 1. 동적 배열 (Dynamic Array) 정적 배열(static array)은 프로그램 실행(run-time)중 크기가 고정돼있다. 동적 배열의 크기는 프로그램 동작 중 동적으로 할당/해제될 수 있다. → 메모리 측면에서 효율적임! 1. new: 동적 메모리 할당에 쓰이는 키워드 double *numbers; numbers = new double[4]; double *numbers = new double[4]; //선언과 할당 동시에 numbers라는 이름의 배열, 원소들은 double형임 numbers는 'new' 키워드로 double형 원소들을 크기(4)만큼 블락(메모리 공간)에 할당함 이 때 블락의 시작 주솟값(=[0]원소의 시작 주솟값)을 저장하는 포인터가 'numbers'가 된다. (동적 배.. 더보기
[C++] 포인터, 벡터, 배열 (2) 1. 함수 리턴값으로 벡터 이용하기 #include #include #include using namespace std; bool is_prime(int n) { if (n 더보기
[C++] 포인터, 벡터, 배열 (1) 1. 포인터 변수 &x : 변수 x의 메모리 상의 시작 주솟값을 반환 int* px : (int*)는 정수형 변수의 시작 주솟값을 저장하는 [포인터]라는 data type *px: px라는 포인터 변수 선언 이후, px에 저장된 주솟값으로 jump, 참조 (px가 '가리키는' 변수로 jump, 참조) px도 물론 포인터'변수'이기 때문에 메모리 공간을 차지하고, 따라서 시작 주솟값이 있음 !! #include using namespace std; int main() { int x = 10; int *px = &x; //포인터 변수에는 주솟값이 들어감 cout 더보기
[C++] String, File - 문자열과 파일 (2) 1. 입/출력을 보기 좋게 하기 위한 부가기능 .width( ): 데이터를 표시할 칸 수를 지정하고 우측 정렬함 (=iomanip의 setw( )와 동일) .precision( ): 소수점 뒤에 표시할 수 있는 숫자 개수(자릿수)를 제한함 (유효자리숫자) .fill( ): 공백 채워줌 (char만) #include #include using namespace std; int main() { char ch; //스페이스바(white space)는 문자로 취급x cin.unsetf(ios::skipws); //ws를 skip하는 기능 unset(끔) -> 공백 입력 받음 cin >> ch; cout 더보기
[C++] String, File - 문자열과 파일 (1) 1. File(파일) 객체 - 소프트웨어 컴포넌트, 구성품 ex sw component(구성품) 중 하나, 현재 프로그램 외부에 저장하는 데이터들을 file로 볼 수 있다. 이 때 sw component를 객체(object) 또는 클래스(class)라고 부른다. 객체(object) = 멤버 데이터(member data) + 멤버 함수(=member function or method) 로 구성 2. String(문자열) 객체 - 소프트웨어 컴포넌트, 구성품 ex (마찬가지로 객체이기 때문에) 멤버 데이터(member data) + 멤버 함수(=member function or method) 로 구성 string객체의 메소드를 사용하려면 string 라이브러리를 include 해야 한다. #include #.. 더보기
반응형