분류 전체보기
-
Template 사용C++ 2014. 1. 16. 01:54
Template는 다양한 인자 타입에 적용할 수 있는 알고리즘을 만들때 사용한다. Function Template의 예 Template int sizeof(T a) { return sizeof(a); } 그러나 실제로 이런 Function Template를 만들어 사용하기 보다는 STL에서 정의된 Template를 사용하라. Function Template에서 특정 타입에 대해서 별도 구현이 필요한 경우에 특화된 Template Function을 정의한다. à Template Function Specializtion Template int sizeof(char* a) { return strlen(a); } 템플릿의 특수화 버전은 반드시 일반화 버전을 미리 앞에서선언해 두어야 한다. 템플릿 특수화 버전은 ..
-
Friend의 사용시기C++ 2014. 1. 14. 11:52
Friend는 객체지향의 의미를 위반하는 것으로 사용하지 않으나 한가지 경우에 예외적인 사용을 한다. Pointer p4 = 10+p3; +operation 사용시 왼쪽에 int를 넣을 수가 없다. 그래서 사용하는 방법이 전역함수를 사용하여 int를 매개변수로 받는 방법이다. Pointer operator+(int i, const Pointer& p) { Pointer(temp); temp.x=i+p.x; temp.y=i+p.y; return temp; } 그리고 .h에서 private mamber를 access하기 위해서 friend를 사용. public: Pointer(void); ~Pointer(void); Pointer& operator++(); Pointer& operator--(); Point..
-
Overloading과 Overriding의 차이C++ 2014. 1. 14. 09:21
class Test { // Test::func is overloaded virtual void func(int x); virtual void func(double y); }; class Child : public Test { // Child::func overrides Test::func virtual void func(int x); };Overloading과 Overriding은 자주 사용을 하면서도 용어상으로는 늘 혼동이 되는 것이라 여기서 정리를 한다. 1) Overloading 같은 이름의 멤버함수이나 매개 변수, 가상 등으로 다른 멤버함수를 같은 멤버함수 이름으로 사용하는 것 또 다른 형태의 오버로딩은 연산자 오버로딩이다. 각 디폴트 연산자들을 자신의 목적에 맞게 다시 정의해서 사용하는 방식이..
-
가상함수, 추상클래스의 권고 사항C++ 2014. 1. 14. 06:01
추상 클래스란 JAVA에서 많이 사용을 하는데 C++에서는 Pure Virtual Class,즉 Class내에 Virtual 함수가 있는 경우를 말한다.추상 클래스를 사용하는 이유는 1. Base Class에서 인터페이스만를 제공한다. (중요한 개념)같이 구현을 하는 경우에 상위 클래스를 설계하는 사람이 상위에서 개념상으로 미리 구현되어야 것을 정의해놓는 것이다. 즉 베이스에서는 멤버함수에 대한 이름만 제공을 하고 상속받는 하위 클래스에서 자기들이 원하는 대로 해당 함수를 Overiding해서 사용하는 것이다. 2. 생성자는 필요 없지만 반드시 가상소멸자가 있어야 한다. class Employee{private://클래스 안의 변수를 private 상속 받은 클래스라도 사용할 수 없도록 함.//상속 받은..
-
const 사용C++ 2014. 1. 14. 04:11
이건 아무리 강조해도 지나치지 않다. C++나 JAVA에서도 마찬가지이다.정리를 해보면 1) 변경될 가능성이 거의 없는 변수는 const를 붙여서 시작해라.2) get 함는 무조건 아래 같이 써라. const int getMoney() const;3) set 함수에서도 void setMoney(const int money) 4) 위와 같이 쓰려면 반드시 멤버변수 하나에 get/set 하나씩만 선언헤서 사용하고 한 멤버함수에서 여러개의 멤버를 같이 변경하는 것은 피해라. 굳이 같이 함수에서 처리하려면 const member와 non const member로 나누어서 사용하라.
-
C++ Object 생성시 주의 사항1C++ 2014. 1. 14. 04:01
1)Employee a("Lee", "7324393277", 22); // crate a constructor2)Employee a = Employee("Lee", "7324393277", 22); // create a default copy constructor3) Employee* a = new Employee("Lee", "7324393277", 22); // crate a constructor Object 생성시에 위의 두 문장은 같아 보이지만 실제로는 다른 객체를 생성을 한다.1) 3)은 C++ 형태의 객체 생성이며 따라서 Default 생성자가 호출된다.2)는 C 형태의 객체 생성이지만 실제적으로는 복사 생성자에 의해서 객체가 생성이 된다. 2)가 문제가 되는 경우는 생성자에서 포인터를 사용하..