1. 클래스 정의
클래스를 정의할 때는 데이터 멤버와 멤버 함수를 잘 구조화해야 합니다.
cpp
class Rectangle {
private:
double width;
double height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double area() const {
return width * height;
}
void setWidth(double w) {
width = w;
}
void setHeight(double h) {
height = h;
}
};
2. 접근 제어
private: 클래스 외부에서 접근할 수 없음.
protected: 서브 클래스에서만 접근 가능.
public: 클래스 외부에서 접근 가능.
적절한 접근 제어를 통해 데이터 은닉을 유지하고, 클래스의 인터페이스를 명확히 해야 합니다.
3. 생성자와 소멸자
생성자는 객체가 생성될 때 호출되며, 초기화를 담당합니다. 소멸자는 객체가 소멸될 때 호출됩니다.
cpp
class Example {
public:
Example() {
// 초기화 코드
}
~Example() {
// 정리 코드
}
};
4. 복사 생성자와 대입 연산자
클래스 객체의 복사 시 깊은 복사를 원하는 경우 복사 생성자와 대입 연산자를 정의해야 합니다.
cpp
class MyClass {
private:
int* data;
public:
MyClass(int value) {
data = new int(value);
}
// 복사 생성자
MyClass(const MyClass& other) {
data = new int(*other.data);
}
// 대입 연산자
MyClass& operator=(const MyClass& other) {
if (this != &other) {
delete data; // 기존 메모리 해제
data = new int(*other.data);
}
return *this;
}
~MyClass() {
delete data;
}
};
5. 상속
클래스를 상속받아 새로운 클래스를 생성할 수 있습니다. 이를 통해 코드의 재사용성을 높일 수 있습니다.
cpp
class Shape {
public:
virtual double area() const = 0; // 순수 가상 함수
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double area() const override {
return 3.14 * radius * radius;
}
};
6. 다형성
가상 함수를 사용하여 다형성을 구현할 수 있습니다. 이를 통해 부모 클래스의 포인터나 참조로 자식 클래스 객체를 다룰 수 있습니다.
cpp
void printArea(const Shape& shape) {
std::cout << "Area: " << shape.area() << std::endl;
}
Circle circle(5);
printArea(circle); // Circle의 area() 호출
7. STL과의 통합
C++의 표준 템플릿 라이브러리(STL)와 잘 통합하여 클래스를 사용할 수 있습니다. 예를 들어, std::vector를 사용하여 객체를 저장할 수 있습니다.
cpp
#include <vector>
std::vector<Circle> circles;
circles.emplace_back(5);
8. 예외 처리
클래스 내에서 예외를 처리하여 안정성을 높일 수 있습니다.
cpp
class Division {
public:
double divide(double a, double b) {
if (b == 0) {
throw std::invalid_argument("Division by zero");
}
return a / b;
}
};
'반도체 > C++' 카테고리의 다른 글
C++ enum 열거형 (0) | 2024.12.04 |
---|---|
38. C++ 화살표 연산자 (0) | 2024.09.04 |
36. C++에서 배열과 포인터 관계 (0) | 2024.09.03 |
35. C++에서의 포인터 개념 (0) | 2024.09.03 |
34.1 사원 관리 프로그램 추가 C++ (0) | 2024.09.03 |