본문 바로가기

개발/C++5

복사 생성자와 복사 대입연산자 #pragma once #include using namespace std; class CPerson { public: CPerson(const char* name, const int age); CPerson(void); ~CPerson(void); //복사 생성자 CPerson(const CPerson& copyPerson); //복사 대입연산자 CPerson& operator=(const CPerson& copyPerson); public: int iAge; char* strName; private: enum DEFULATVALUES { eMaxNameSize = 100 }; }; Person 클래스의 복사 생성자, 복사 대입연산자의 선언 부분이다. 선언 해주지 않으면 컴파일러가 디폴트 복사 생성자와.. 2016. 10. 22.
explicit 키워드 #pragma once #include using namespace std; class AA { public: AA(void); AA(int param1); ~AA(void); void print(void); private: int _param1; }; #include #include "AA.h" using namespace std; void printValue(AA printValue) { printValue.print(); } void main(void) { int inputValue; printValue(5); cin>>inputValue; } 위와 같이 printValue 함수에는 인자로 AA클래스를 전달해주도록 되어있지만 AA클래스의 생성자에 int형 변수를 받는 생성자가 있으므로 int 변수가.. 2016. 10. 20.
가상 함수 C++은 다형성을 지원하기 위해서 virtual 키워드를 제공한다.부모 클래스에서 virtual 키워드가 붙여진 함수는 자식 클래스에서 재정의 될 수 있다.이 재정의하는 것을 오버라이딩이라고 한다. 설명을 위해 하나의 클래스와 이를 상속받는 자식클래스를 정의하겠다.class Parent{virtual void Print(){printf("%s", "Parent Print");}}class Child : public Parent{void Print(){printf("%s", "Child Print");} //상속받는 클래스에서의 virtual 키워드는생략가능} Parent* p = new Child;p->Print(); //-> 포인터가 실제 가리키는 클래스인 Child 클래스의 Print가 호출된다. 컴.. 2015. 10. 6.
c++11에 추가된 기능 - auto 변수 컴파일 타임에 타입이 자동으로 정해지는 변수.따라서 선언시 반드시 바로 초기화를 해줘야한다. ex)int main(){auto Number = 5; //컴파일시 int 형으로 auto Name = "Jong"; //컴파일시 char* 형으로 int iNum = 2;autu* pNumber = &iNum; //컴파일시 int* 형으로} 또한 타입이름이 길고 복잡한 STL에서 효과적로 사용할 수 있다고 한다.for(auto iter = vContainer.begin(); iter != vContainer.end(); ++iter){printf("%d\n", *iter);} 2015. 9. 30.