목록공부/C++ (11)
dev_eun

유닛테스트 하는 방법 참조 Microsoft.VisualStudio.TestTools.CppUnitTestFramework API - Visual Studio 이 문서에서는 Microsoft 기본 단위 테스트 프레임워크를 기반으로 C++ 단위 테스트를 작성하는 데 사용할 수 있는 CppUnitTestFramework 멤버에 대해 설명합니다. docs.microsoft.com 1. 솔루션에 '기본 단위 테스트 프로젝트' 추가하기 2. 테스트프로젝트의 참조에서 참조 추가를 눌러 테스트할 프로젝트 추가하기 3. 테스트.cpp에 테스할 함수가 있는 파일 include 4. 테스트 함수 작성 결과를 테스트 탐색기에서 확인할 수 있다. 창이 안보인다면 테스트 옵션에서 탐색기 누르거나 Ctrl + E, T 단축키 자..
용어 try : 예외가 발생할 수 있는 곳 throw : 예외 발생 catch : 예외 처리 스택 풀기 : 스택 메모리에 불필요한 데이터가 쌓이지 않게 예외 발생하기 전으로 돌아감 try, catch, throw 예외를 if-else문으로 처리하는 것보다 구조적으로 간결 try{ // 에러가 발생할 수 있는 코드 // 흐름이 한 눈에 보임 if(error 발생) throw errorcode; ... } catch(int e){ 예외 처리 } catch 다중화 예외 상황을 상황에 따라 구별하여 사용할수 있음 try{ ... } catch(int eNum){ } catch(char eCh){ ... // 이중 가능 try { ... } catch(...) { ... } } 예외 클래스 사용자화 예외 클래스 ..
용어 클래스 템플릿 클래스 템플릿 : 클래스를 찍어내는 모양자 선언 template class 클래스이름 { } 함수 템플릿처럼 비슷하게 사용 멤버 선언 및 정의 template 클래스이름::멤버함수이름() { } ### 템플릿 매개 변수 * 선언 ```c++ template template ``` * 사용 ```c++ CMyArray arr; ``` * * * ## 템플릿 특수화 ### 함수 템플릿 특수화 ```c++ template T Add(T a, T b) { return a + b; } template char* Add(char* pszLeft, char* pszRight) { ... } 매개변수가 모두 char*이면 두 번째 함수로 대체 클래스 템플릿 특수화 template class C..
[Chapter 8] 수평적 관계와 집합 관계 용어 friend 선언 friend 예약어 사용 friend class 클래스이름; friend 함수원형선언; 접근 제어 지시자의 영향 X 응집성을 위해서 존재friend 함수 class CMyData{ ... // 전역 함수를 friend로 선언 friend void PrintData(const CMyData& a); } void PrintData(const CMyData& a){ cout
용어 virtual : 가상 함수 예약어 가상함수 : virtual 예약을 앞에 붙여 선언한 메소드 추상자료형 : 상위 크래스로 하위 파생 클래스를 참조할 때의 상위 클래스 형식 vtable : 가상 함수 테이블, 함수 포인터 배열 순수 가상 함수 : 선언은 지금 해두지만 정의는 미래에 하도록 미뤄둔 함수 순수 가상 클래스 : 순수 가상 함수를 멤버로 가진 클래스 가상 함수 virtual 예약어를 앞에 붙여서 선언한 메소드 virtual 반환형식 메소드이름 virtual void PrintData(); 파생 형식에서 메소드를 재정의하면 과거의 정의가 완전히 무시된다. 미래 의 함수를 호출하는 것..! 참조 형식이 무엇이든 실 형식의 메소드를 호출한다. 일반 메소드의 경우 실형식은 중요하지 않고 참조 형식..
[Chapter 6] 상속 기본 용어 상속 : 객체 단위 코드를 재사용하는 방법 재정의 : 기존의 선언 및 정의된 코드를 유지하면서 새롭게 바꾸는 방법 메소드 재정의 : 클래스에 있는 메소드를 자유롭게 재정의 상속 객체 단위 코드를 재사용하는 방법 상속 받는 클래스와 상속하는 클래스 사이의 관계를 고려해 프로그램 작성 기본 형식 class 파생클래스이름 : 접근제어지시자 부모클래스이름 public 접근 제어 지시자를 통한 상속 파생 클래스 인스턴스가 생성되면 기본 클래스의 생성자 호출 파생 클래스는 private 접근 제어 지시자로 선언된 멤버를 제외한 기본 클래스의 멤버에 접근 가능 식별자 검새 순서에 근거 사용자 코드에서 파생 클래스의 인스턴스를 통해 기본 클래스 메소드 호출 가능 메소드 재정의(Ov..
[Chapter 5] 연산자 다중 정의 용어 연산자 함수 : 연산자 다중 정의 : 연산자 함수 연산자를 이용하듯 호출할 수 있는 메소드 클래스에서 다중 정의를 하게 되면 기본 자료형처럼 연산을 할 수 있음 형변환 연산자 operator 변환할자료형() 덧셈 연산자 클래스이름 operator+(const 클래스이름& param) 클래스 형식을 리턴하므로 이동 생성자 호출 void를 반환하게 되면 연속으로 연산 불가능 다중 정의 가능 -> 클래스이름 operator+(다른자료형 param) 대입 연산자 단순 대입 연산자 클래스이름& operator=(const 클래스이름& param){ // 자신에 자신을 대입할 경우 대비 if(this == ¶m) return; // 깊은 복사 수행 delete m..
[Chapter 4] 복사 생성자와 임시 객체 용어 복사 생성자 : 깊은 복사 : 얕은 복사 : 임시 객체 : 이동 시맨틱 : 복사 생성자 객체의 복사본을 생성할 때 호출되는 생성자 디폴트 복사 생성자 : 복사 생성자를 생략하면 디폴트 생성자처럼 컴파일러가 '알아서' 만들어 줌 클래스 내부에서 멤버 변수에 포인터 변수를 동적 할당 및 해제할 경우 조심해야 함 복사 생성자가 호출되는 경우 명시적으로 객체의 복사본을 생성하는 방식으로 선언 함수 형태로 호출 : 매개변수로 사용 함수 형태로 호출 : 반환 타입으로 사용 // 매개변수가 상수형 참조 클래스이름(const 클래스이름 &rhs); 복사 생성자 차단 방법 명시적으로 복사 생성자 삭제 ... Class(const Class& rhs) = ..