참조자의 도입 C 언어에서는 어떠한 변수를 가리키고 싶을 때 반드시 포인터를 사용해야만 함 C++에서는 참조자도 사용 가능 > 실행 결과 5 3 > 실행 결과 a : 5 anotherA : 5 레퍼런스의 특징 반드시 처음에 누구의 별명이 될 것인지를 지정해야 함 레퍼런스가 한 번 별명이 되면 절대로 다른 이의 별명이 될 수 없다. 레퍼런스는 메모리...
malloc, free 그리고 new, delete C++에서도 C언어에서 사용한 malloc과 free를 사용하여 힙 메모리에 할당 가능 하지만, C++ 언어 차원에서 지원하는 것은 new와 delete임 new는 malloc에 대응대는 것으로 메모리를 할당하고, delete는 free에 대응되는 것으로 메모리를 해제함 > new 사용 방법 T* poi...
객체 변수들과 참고 자료들로 이루어진 소프트웨어 덩어리 캡슐화 외부에서 직접 인스턴스 변수의 값을 바꿀 수 없고, 인스턴스 메소드를 통해서 간접적으로 조절하는 것 클래스 C++상에서 객체를 만들 때 사용 Date 클래스 만들기 >실행 결과 2012.3.3
함수의 오버로딩 오버로딩의 사전적 의미 과적하다 sb (with sth) 너무 많이 주다 ✔️ (컴퓨터, 전기 시스템 등에) 과부화가 걸리게 하다 함수의 오버로딩 -> 함수에 과부화를 주는 것 C++에서는 같은 이름의 함수를 호출했을 때 어떻게 구분할까? 함수 호출 시 사용하는 인자를 보고 결정함 -> C++에서는 함수의 이름이 같더라도 인자가 다르면 ...
소멸자 >~클래스의 이름(); 소멸자는 생성자와 달리 인자를 아무것도 가지지 않음 -> 즉, 오버로딩이 되지 않음 복사 생성자 >T(const T& a); 다른 T의 객체 a를 상수 레퍼런스로 받음 a는 cont 이므로 복사 생성자 내부에서 a의 데이터를 변경할 수 없고, 오직 새롭게 초기화되는 인스턴스 변수들에게 '복사'만 할 수 있게 됨 >실행 결과...
생성자의 초기화 리스트 (initializer list) >실행 결과 * Marine * Location : ( 2 , 3 ) HP : 50 * Marine * Location : ( 3 , 5 ) HP : 50 비교 위와 같이 생성자 이름 뒤에 : 멤버변수(값), ... 형식으로 오는 것을 초기화 리스트라고 부르며, 생성과 동시에 멤버 변...
static 멤버 변수 클래스의 static 멤버 변수는 객체가 소멸될 때 소멸되는 것이 아닌 프로그램이 종료될 때 소멸됨 클래스의 모든 객체들이 '공유'하는 변수로써 각 객체 별로 따로 존재하는 멤버 변수들과는 달리 모든 객체들이 '하나의' static 멤버 변수를 사용하게 됨 모든 전역 및 static 변수들은 정의와 동시에 값이 자동으로 0으로 초기...
암시적 변환(implicit conversion) myString에 미리 크기를 할당 받는 새로운 생성자 추가 암시적 변환의 문제점 사용자의 실수로 doSomethingWithString 함수의 인자로 숫자를 전달하는 경우 컴파일러는 myString(int capacity)가 있으므로 오류로 판단하지 않음 즉, 사용자가 의도하지 않은 암시적 변환이 일어...
연산자 오버로딩 >(리턴 타입) operator(연산자) (연산자가 받는 인자) 기존에 만든 myString에 위 함수를 만든 후 아래와 같이 main 함수 실행 >실행 결과 st1 와 str2 는 다르다. str2 와 str3 는 같다. 복소수(Complex number) 클래스 만들기 >실행 결과 ( 7 , 4 ) 값을 리턴하는 연산자 함수 ...
C++ 스타일의 캐스팅 기존의 C언어 캐스팅 방법 : 암시적, 명시적 캐스팅 명시적 캐스팅은 말도 안되는 캐스팅에 컴파일러가 오류를 발생시키지 않음 (프로그래머의 실수에 취약) 명시적 캐스팅은 코드의 가독성이 떨어짐 (예) function((int)variable); C++의 캐스팅 방법 (1) static_cast : 언어적 차원에서 지원하는 일반적인 ...
상속 >실행 결과 === 기반 클래스 생성 === 기반 클래스 === 파생 클래스 생성 === 기반 클래스 파생 클래스 기반 생성 시 부모가 있는 경우 부모의 생성자가 호출된 뒤 자식 생성자가 호출됨 부모 클래스의 모든 정보를 상속 받았기 때문에 Derived에서도 what 호출 가능 Derived에도 what이 있다면? >실행 결과 기반 클래스...
is a와 has a 업캐스팅 >실행 결과 기반 클래스 기반 클래스 파생 클래스 포인터 버전 === 기반 Derived 객체 c는 Base를 상속받은 객체이기 때문에 Base 객체를 가리키는 포인터가 c를 가리켜도 문제 없음 -> 업 캐스팅 다운캐스팅 >컴파일 오류 error C2440: 'initializing' : cannot convert ...
virtual 소멸자 상속 시 소멸자를 가상 함수로 만들어야 함 > 실행 결과 --- 평범한 Child 만들었을 때 --- Parent 생성자 호출 Child 생성자 호출 Child 소멸자 호출 Parent 소멸자 호출 --- Parent 포인터로 Child 가리켰을 때 --- Parent 생성자 호출 Child 생성자 호출 Parent 소멸자 호출 d...
C++ 입출력 라이브러리 C++ 입출력 라이브러리의 구성 ios_base : 스트림의 입출력 형식 관련 데이터 처리 (예) 실수 형을 출력할 때의 정밀도를 어떤 식으로 할건지?, 정수를 몇진수로 출력할지 ios : 스트림 버퍼를 초기화 및 스트림 상태 관리 (참고) 스트림 버퍼 데이터를 내보내거나 받아들이기 전에 임시로 저장하는 곳 사용자가 1바이트 씩...
fstream cout이나 cin은 표준 입출력에 연동 되어 있는 상황이었지만 파일 입출력의 경우 어느 파일에 입출력을 해야 할 지 지정 해야 함 -> 지정 방법은 ifstream 객체의 생성자에 연동하고자 하는 파일의 경로를 전달하면 됨 파일 경로를 지정하면 해당하는 파일을 찾고 열게 됨 만약 파일이 존재하지 않는다면 파일을 열 수 없음 -> 파일이 ...
정규 표현식 문자열에서 패턴을 찾을 때 사용함 정규 표현식을 통해 문자열이 주어진 규칙에 맞는지 확인할 수 있음 db-숫자-log.txt 형태인지 확인하기 실행 결과
형식 연역이란? 컴파일러가 변수나 함수의 타입을 자동으로 추론하는 과정 함수 템플릿 호출 지점, auto, decltype 표현식 등에서 발생함 템플릿 형식 연역 규칙 컴파일러는 expr를 이용하여 T와 paramType을 연역함 (경우 1) paramType이 포인터 또는 참조 형식이지만 보편 참조는 아닌 경우 규칙...