목록cpp (43)
Nagie's DevStory
this 포인터란 클래스 내부에서 사용되는 포인터인데 자기 자신을 가리키는 용도로 사용되는 조금 특이한 포인터다. 자기 자신을 가리키는 용도로 왜 사용해야 하는지 궁금할 수도 있는데 이는 함수 파라미터의 이름을 데이터 멤버와 중복된 이름을 사용해서 충돌을 방지하기 위해 사용하거나 이 클래스 내부에 있는 멤버라고 명시를 하고 싶을 때 사용된다. 다음은 this 포인터의 사용예시다. class User { private: std::string name; public : User(std::string name) { this->name = name; //this 포인터 사용으로 인해 모호함이 사라졌다. } }; 또한 this 포인터는 비정적 멤버에만 사용할 수 있으며 정적 멤버에 this 포인터를 사용하게 된다..
소멸자는 객체가 소멸하는 시점에 호출되는 특별한 멤버 함수라고 말했다. 생성자와는 다르게 오버 로딩이 불가능하며 파라미터도 가지지 못한다. 소멸자는 클래스의 이름 앞에 '~'가 붙은 형태의 이름을 가지며 사용 예시는 다음과 같다. class User { private: int* nUserNum; std::string strUserName; public : User(int num = 0, std::string name = "Unknown") { this->nUserNum = new int(0); this->strUserName = name; } ~User() { //소멸자 if (this->nUserNum != nullptr) { delete this->nUserNum; this->nUserNum = nu..
생성자는 객체가 생성될 때 자동으로 호출되는 특별한 멤버 함수라고 말했다. 생성자의 주요 역할은 객체의 초기화, 데이터 멤버의 설정, 동적 메모리 할당 등을 수행하며 생성자는 클래스의 이름과 동일하며 반환 유형을 가지지 않는다. 다음은 생성자의 사용 예시이다. class User { private: int nUserNum; std::string strUserName; public : User() { this->nUserNum = 0; this->strUserName = "Unknown"; } User(int num, std::string name) { this->nUserNum = num; this->strUserName = name; } }; 다만 이런 식으로 생성자를 오버 로딩을 하게 된다면 소스 코..
C++에서의 클래스와 구조체의 차이점은 거의 없다고 봐도 무방하다. 디폴트 접근 지정자가 private이냐 public이냐의 큰 차이점만 있을 뿐 C++의 구조체 역시 클래스 처럼 사용할 수 있으며 생성자와 소멸자의 생성과 심지어 상속까지 가능하다. 그러면 왜 구조체를 사용하는지 의문이 들 수 있는데 클래스는 일반적으로 객체의 정의와 구현에 사용되고 구조체는 데이터 구조를 표현하는 데 사용된다. 또 구조체는 C 스타일의 레코드(Record) 타입으로 사용하기 위해 사용하기도 한다.
//클래스의 예시 class Circle { private: double radius; public: Circle(double r) : radius(r) {} double getArea() { return 3.14 * radius * radius; } }; int main() { Circle myCircle(5.0); double area = myCircle.getArea(); } 클래스(Class)란 객체 지향 프로그래밍(OOP)의 핵심 개념이다. 즉 C++만 가지고 있는 개념이 아니란 이야기며 이는 데이터와 데이터를 조작하는 함수를 함께 묶어둔 템플릿 또는 설계도로 생각하면 되겠다. 또한 클래스는 C의 구조체(struct)처럼 사용자 정의 데이터 유형을 만드는 방법중 하나이며 클래스 안에서 선언된 함..