본문 바로가기

C++9

[C++] 함수재정의 오버로딩(overloading) 오버로딩이란 함수를 중복으로 정의한다는 뜻입니다. 오버로딩된 함수의 구분은 매개변수를 기준으로 합니다. 함수의 이름이 같지만 매개변수가 고유하다면 컴파일러가 중복된 함수를 구별할 수 있다는 뜻입니다. 이렇게 이름은 같지만 다른 기능을 하는 오버로딩은 오버라이딩 처럼 C++ 객체지향 특징중 하나인 다형성의 토대가 되는 기술인것 같습니다. 오버로딩은 크게 1. 함수 오버로딩 2. 생성자 오버로딩 3. 연산자 오버로딩 로 나뉠 수 있습니다. 사실 생성자나 연산자나 모두 함수의 범위안에 들긴하지만 엄연히 용어를 구분해서 쓰기 때문에 나눠보았습니다. 1. 함수 오버로딩(Function Overloading) 더보기 #include using namespace std; int Sum(int a, int b); do.. 2020. 10. 9.
[C++] 복사 생성자(copy constructor) 복사 생성자는 말 그대로 원본 객체가 복사될 때 호출됩니다. case 1. 객체가 매개변수의 인자로 넘어갈 때 case 2. 객체간의 대입연산이 이뤄질 때 case 3. 객체를 반환할 때 3가지 모두 객체의 복사가 일어납니다. 그럴때 복사생성자가 호출이 됩니다. 1,2,3번에 관한 예제코드입니다. 더보기 //.h .cpp class CPerson { public: CPerson();//기본 생성자 CPerson(const std::string& name, const int& age);//생성자 오버로딩 CPerson(const CPerson& person);//복사 생성자 void Show(); ~CPerson();//소멸자 private: std::string name; int* age = nullpt.. 2020. 7. 26.
[openCV] 비주얼스튜디오(visual studio) openCV 적용하기 안녕하세요. 처음 외부 라이브러리나 dll을 적용할 때 참 어려움을 많이 겪었었습니다. 그 중에서 opencv 적용하기에 대해 포스팅을 쓰려고합니다. 오늘 포스팅을 보시면 비단 opencv뿐만 아니라 다른 라이브러리도 적용하기가 수월하실거에요. 저는 visual studio2019 버전에서 빌드했습니다. 시작하겠습니다. 1. opencv 다운받기 https://opencv.org/releases/ Releases opencv.org 에서 openCV 4.4.0을 다운받고 압축해제 합니다. 저는 따로 opencv관리 폴더를 만들어 저장합니다. 2. visual studio 프로젝트 설정 모든 구성으로 바꿔주시구요. 플랫폼은 x64입니다. x86은 CMake로 따로 만들어 주거나, openCV 낮은버전 릴리.. 2020. 7. 19.
[C++] 생성자(Constructor) 소멸자(Destructor) 생성자 객체가 생성되면서 멤버변수의 초기화나 멤버함수를 호출하는 등 사전에 필요한 준비작업을 하는 함수 입니다. 1. 반환 형은 없다. 2. 클래스 이름과 동일하게 선언을 한다. 3. 외부의 값으로 멤버변수를 초기화 해야할 경우 매개변수를 가진 생성자를 재정의(오버로딩) 할 수도 있다. 쉽게 말하자면 우리가 변수를 초기화 하듯이 객체가 생성됨과 동시에 객체를 초기화 시켜주는 역할을 합니다. 그런데 이전 포스팅들을 보면 생성자가 정의되어 있지 않음에도 불구하고 에러없이 잘 돌아가는데 그건 컴파일러가 기본생성자를 만들어서 호출하기 때문입니다. 만약 오버로딩된 생성자를 정의 한다면 기본생성자는 컴파일러가 만들어주지 않습니다. 따라서 기본생성자도 구현을 해줘야 하죠. //.h class CBase { publi.. 2020. 7. 19.