본문 바로가기

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.
[C++] call by value, call by address, call by reference 차이 함수가 호출될 때 매개변수에 인자를 어떤 방식으로 넣어줄건지에 대한 개념이죠. call by value : 값에 의한 전달 call by address : 주소에 의한 전달 call by reference : 참조에 의한 전달 1. call by value 더보기 //main void CallByValue(int value) { value = 20; std::cout 2020. 7. 21.
[C++] 생성자(Constructor) 소멸자(Destructor) 생성자 객체가 생성되면서 멤버변수의 초기화나 멤버함수를 호출하는 등 사전에 필요한 준비작업을 하는 함수 입니다. 1. 반환 형은 없다. 2. 클래스 이름과 동일하게 선언을 한다. 3. 외부의 값으로 멤버변수를 초기화 해야할 경우 매개변수를 가진 생성자를 재정의(오버로딩) 할 수도 있다. 쉽게 말하자면 우리가 변수를 초기화 하듯이 객체가 생성됨과 동시에 객체를 초기화 시켜주는 역할을 합니다. 그런데 이전 포스팅들을 보면 생성자가 정의되어 있지 않음에도 불구하고 에러없이 잘 돌아가는데 그건 컴파일러가 기본생성자를 만들어서 호출하기 때문입니다. 만약 오버로딩된 생성자를 정의 한다면 기본생성자는 컴파일러가 만들어주지 않습니다. 따라서 기본생성자도 구현을 해줘야 하죠. //.h class CBase { publi.. 2020. 7. 19.