일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Pytorch Lecture
- 컴퓨터 비전
- 영상처리
- 모두의 딥러닝 예제
- object detection
- 파이토치 강의 정리
- c++공부
- 케라스 정리
- 모두의 딥러닝
- tensorflow 예제
- 골빈해커
- c++
- pytorch
- c언어 정리
- 딥러닝 스터디
- matlab 영상처리
- TensorFlow
- 딥러닝
- pytorch zero to all
- 미디언 필터링
- 해리스 코너 검출
- 김성훈 교수님 PyTorch
- 파이토치 김성훈 교수님 강의 정리
- C언어 공부
- MFC 프로그래밍
- 딥러닝 공부
- 가우시안 필터링
- c언어
- 파이토치
- 팀프로젝트
- Today
- Total
목록Programming Language/C++ Programming (16)
ComputerVision Jack
[형 변환 연산] C++의 4개의 형변환 연산자 static_cast dynamic_cast const_cast reinterpret_cast dynamic_cast 상속 관계에서의 안전한 형 변환 dynamic_cast(expr) 상속 관계에 놓여 있는 두 클래스 사이에서 유도 클래스의 포인터 및 참조형 데이터를 기초 클래스의 포인터 및 참조형 데이터 형 변환하는 경우 Two * tptr = new Two(10, 20); One * optr = dynamic_cast(tptr); static_cast A 타입에서 B타입으로. static_cast(expr) 유도 클래스의 포인터 및 참조형 데이터를 기초 클래스의 포인터 및 참조형 데이터로 뿐만 아니라 기초 클래스의 포인터 및 참조형 데이터도 유도 클래스..
[예외 처리] 예외 : 프로그래밍 실행 도중에 발생하는 예외적인 상황 문법적 오류가 아닌, 프로그램의 논리에 맞지 않는 상황 if문을 이용한 예외 처리 우리가 전에 배운 예외 처리 방식은 if문이다. if문으로 프로그램의 흐름에 위배되는 경우가 발생하면 흐름을 정리하여 구분한다. 하지만 예외처리를 위한 문장인지 프로그램의 흐름 떄문인지 분간하기 어렵다. [C++ 예외처리] try : 예외를 발견한다 catch : 예외를 잡는다. throw : 예외를 던진다. try 블록 예외 발생에 대한 검사의 범위를 지정할 때 사용된다. try 블록내에 예외가 발생하면 처리하도록 보낸다. try{ 예외 발생 } catch 블록 try 블록에서 발생한 예외를 처리하는 코드가 담긴 영역. catch(예외 종류) { 예외 ..
[클래스 템플릿 특수화] 클래스 템플릿 특수화(Class Template Specialization) 특정 자료형 기반으로 생성된 객체에 대해, 다른 행동양식을 적용하기 위함 템플릿 구성하는 멤버 함수의 일부 또는 전부를 다르게 행동하도록 정의 가능하다. 클래스 템플릿 부분 특수화 template class Sample { }; templat class Sample { }; 하나의 템플릿에 대하여 부분으로 특수화를 진행했다. [템플릿 인자] T1, T2 : 템플릿 매개변수 (자료형 : 템플릿 인자) class Sample #템플릿 매개변수에도 변수가 올 수 있다. 이러한 변수는 해당 템플릿 클래스에서 상수처럼 사용된다. 생성자를 통해서 전달하여도 무방하다. template 템플릿 매개 변수에 디폴트 값 ..
[템플릿(Template)에 대한 이해] 템플릿 : 자료형이 정해지지 않은 그릇 함수 템플릿 함수를 만드는 도구. 함수의 기능은 존재하지만, 자료형은 결정되지 않았다. 다양한 자료형의 함수를 만들어 낼 수 있다. int Sample(int num1, int num2){ return num1 - num2 } 함수가 존재할 때, 템플릿으로 변환하면 T Sample(T num1, T num2) { return num - num1 } 변환이 된다. 즉, 함수의 기능은 뺄셈으로 똑같이 정의되지만, 자료형은 T로 정의되지 않은 것을 볼 수 있다. Sample(2.5, 1.0) 형태로 사용이 가능하다. Sample(2.5, 1.0) 식으로 사용이 된다면, 알아서 값 손실 없이 인자를 전달하기 위해 double로 설정..
[C++의 표준 String 클래스] String 클래스 C++표준 라이브러리에 정의된 함수. 문자열의 처리를 목적으로 정의된 클래스. 헤더파일을 포함해야한다. string클래스 또한 연산자에 대하여 오버로딩되어 있다. [문자열 처리 클래스 정의] 문자열 인자로 전달받는 생성자 정의 string str = "Hello"; string str("Hello"); #두 코딩은 같은 동일한 내용이다. 생성자, 소멸자, 복사생성자, 대입 연산자 정의 String 클래스는 문자열 저장 및 표현하는 클래스이다. 하지만 이러한 문자열은 길이가 일정하지 않기 때문에, 모모리 공간을 생성자를 통해 동적으로 할당해야 한다. +연산자 오버로딩 String str3 = str1 + str2; +연산자의 반환 값 문자열의 주소값..
[대입 연산자 오버로딩] 대입 연산자 오버로딩은 복사 생성자와 매우 유사하다. 디폴트 대입 연산자 정의하지 않으면 디폴트 대입 연산자가 삽입된다. 디폴트 대입 연산자는 멤버 대 멤버 얕은 복사를 진행한다. 동적할당을 할 경우, 직접 정의해야 한다. Sample s1(5, 10); Sample s2(10, 20); s2 = s1; # s3.operator=(s1); 의 의미를 멤버 함수 방식으로 내포하고 있다. 디폴트 대입 연산자 문제점 복사 생성자의 문제점과 마찬가지로 소멸자 호출과정에서 문제가 발생한다. 상속 구조에서 대입 연산자 호출 유도 클래스의 대입 연산자에 아무런 명시를 하지 않으면 기초 클래스 대입 연산자가 호출 되지 않는다. 유도 클래스 대입 연산자 정의에서 명시적으로 기초 클래스 대입 연산..
[연산자 오버로딩 이해] Sample operator+(const Sample & ref){ } operator 키워드와 연산자를 묶어서 함수의 이름을 정의하면 함수의 이름을 통하거나 연산자를 통하여 함수를 호출 할 수 있게 한다. 연산을 할때, 피연산자가 객체일 경우, 클래스 안에 정의된 연산자 재정의를 통하여 함수를 불러온다. 이러한 연산자 재정의 함수는 const로 선언하지 않는다. 연산자 오버로딩 멤버 함수에 의한 연산자 오버로딩 - 객체.operator+(객체) 전역 함수에 의한 연산자 오버로딩 - operator+(객체, 객체) 연산자 오버로딩 주의사항 의도를 벗어난 연산자 오버로딩은 좋지 않다. 연산자의 우선순위와 결합성은 바뀌지 않는다 매개변수의 디폴트 값 설정 불가하다 순수 기능은 보존한..
[가상 함수의 동작원리] virtual로 선언된 가상함수가 있다면, 한 개 이상의 가상 함수를 포함하는 클래스에 대해서는 컴파일러가 가상 함수 테이블을 만든다. V-Table 가상 함수 테이블은 key와 value가 있다. key : 호출 하는 함수를 구분하는 구분자 역할 value : 구분자에 해당하는 함수의 주소 정보를 알려준다. 따라서 C++의 언어는 가상함수 테이블을 참조하기 때문에 실행 시간이 저하된다. [다중 상속(Multiple Inheritance)] 다중 상속(Multiple Inheritance) 둘 이상의 클래스를 동시에 상속하는 것. class Three : public One, protected Two{ 클래스 내용 }; 다중상속의 모호성(Ambiguous) 상속 받는 두 클래스에..