C++ 클래스 및 객체
C++는 C 언어 기반의 객체 지향 프로그래밍을 추가합니다. C++는 객체 지향 프로그래밍을 지원합니다. 클래스는 C++의 핵심 기능이며 종종 사용자 정의 유형이라고도 합니다.
클래스는 데이터 표현과 데이터 처리 방법을 포함하는 객체의 형태를 지정하는 데 사용됩니다. 클래스의 데이터와 메서드를 클래스의 멤버라고 합니다. 클래스의 함수를 클래스의 멤버라고 합니다.
C++ 클래스 정의
클래스 정의는 본질적으로 데이터 유형을 정의하기 위한 청사진입니다. 이는 실제로 데이터를 정의하지는 않지만 클래스 이름이 의미하는 바를 정의합니다. 즉, 클래스의 개체에 포함된 내용과 이 개체에 대해 수행할 수 있는 작업을 정의합니다.
클래스 정의는 class 키워드로 시작하고 그 뒤에 클래스 이름이 옵니다. 클래스의 본문은 한 쌍의 중괄호로 묶입니다. 클래스 정의 다음에는 세미콜론이나 선언 목록이 와야 합니다. 예를 들어 다음과 같이 class 키워드를 사용하여 Box 데이터 유형을 정의합니다.
class Box { public: double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box };
키워드 public는 클래스 멤버의 액세스 속성을 결정합니다. 클래스 객체 범위 내에서 공용 멤버는 클래스 외부에서 액세스할 수 있습니다. 클래스 구성원을 private 또는 protected로 지정할 수도 있습니다. 이에 대해서는 나중에 설명하겠습니다.
C++ 객체 정의
클래스는 객체의 청사진을 제공하므로 기본적으로 객체는 클래스를 기반으로 생성됩니다. 기본 유형의 변수와 마찬가지로 클래스의 객체를 선언합니다. 다음 명령문은 Box 클래스의 두 개체를 선언합니다.
Box Box1; // 声明 Box1,类型为 Box Box Box2; // 声明 Box2,类型为 Box
Box1 및 Box2 개체에는 각각의 데이터 멤버가 있습니다.
데이터 멤버 액세스
클래스 객체의 공개 데이터 멤버는 직접 멤버 액세스 연산자(.)를 사용하여 액세스할 수 있습니다. 이러한 개념을 더 잘 이해하기 위해 다음 예를 시도해 보겠습니다.
#include <iostream> using namespace std; class Box { public: double length; // 长度 double breadth; // 宽度 double height; // 高度 }; int main( ) { Box Box1; // 声明 Box1,类型为 Box Box Box2; // 声明 Box2,类型为 Box double volume = 0.0; // 用于存储体积 // box 1 详述 Box1.height = 5.0; Box1.length = 6.0; Box1.breadth = 7.0; // box 2 详述 Box2.height = 10.0; Box2.length = 12.0; Box2.breadth = 13.0; // box 1 的体积 volume = Box1.height * Box1.length * Box1.breadth; cout << "Box1 的体积:" << volume <<endl; // box 2 的体积 volume = Box2.height * Box2.length * Box2.breadth; cout << "Box2 的体积:" << volume <<endl; return 0; }
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Box1 的体积:210 Box2 的体积:1560
비공개 멤버와 보호 멤버에 직접 액세스할 수 없다는 점에 유의하는 것이 중요합니다. 직접 멤버 액세스 연산자(.)를 사용합니다. 이후 튜토리얼에서 private 및 protected 멤버에 액세스하는 방법을 배우게 됩니다.
클래스와 객체에 대한 자세한 설명
지금까지 우리는 C++ 클래스와 객체에 대한 기본적인 이해를 했습니다. 다음 목록에는 C++ 클래스 및 개체와 관련된 몇 가지 다른 개념도 나열되어 있습니다. 해당 링크를 클릭하면 학습할 수 있습니다.
Concept | Description |
---|---|
클래스 멤버 함수 | 클래스의 멤버 함수는 클래스 정의의 다른 변수와 마찬가지로 클래스 정의 내부에 정의와 프로토타입이 작성되는 함수를 참조합니다. |
클래스 액세스 수정자 | 클래스 구성원은 공개, 비공개 또는 보호로 정의될 수 있습니다. 기본적으로 비공개로 정의됩니다. |
Constructor & Destructor | 클래스의 생성자는 새 객체가 생성될 때 호출되는 특수 함수입니다. 클래스의 소멸자는 생성된 객체가 삭제될 때 호출되는 특수 함수이기도 합니다. |
C++ 복사 생성자 | 복사 생성자는 객체 생성 시 동일한 클래스에서 이전에 생성된 객체를 사용하여 새로 생성된 객체를 초기화하는 특수 생성자입니다. |
C++ 친구 함수 | 친구 함수는 클래스의 비공개 및 보호 멤버에 액세스할 수 있습니다. |
C++ 인라인 함수 | 인라인 함수를 사용하면 컴파일러는 함수가 호출되는 지점에서 함수 본문의 코드를 확장하려고 시도합니다. |
C++의 이 포인터 | 모든 객체에는 객체 자체를 가리키는 특수 포인터 this가 있습니다. |
C++의 클래스에 대한 포인터 | 클래스에 대한 포인터는 구조에 대한 포인터처럼 동작합니다. 실제로 클래스는 함수가 포함된 구조로 생각할 수 있습니다. |
C++ 클래스의 정적 멤버 | 클래스의 데이터 멤버와 함수 멤버 모두 정적으로 선언할 수 있습니다. |