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++ 클래스 및 개체와 관련된 몇 가지 다른 개념도 나열되어 있습니다. 해당 링크를 클릭하면 학습할 수 있습니다.

ConceptDescription
클래스 멤버 함수클래스의 멤버 함수는 클래스 정의의 다른 변수와 마찬가지로 클래스 정의 내부에 정의와 프로토타입이 작성되는 함수를 참조합니다.
클래스 액세스 수정자클래스 구성원은 공개, 비공개 또는 보호로 정의될 수 있습니다. 기본적으로 비공개로 정의됩니다.
Constructor & Destructor 클래스의 생성자는 새 객체가 생성될 때 호출되는 특수 함수입니다. 클래스의 소멸자는 생성된 객체가 삭제될 때 호출되는 특수 함수이기도 합니다.
C++ 복사 생성자 복사 생성자는 객체 생성 시 동일한 클래스에서 이전에 생성된 객체를 사용하여 새로 생성된 객체를 초기화하는 특수 생성자입니다.
C++ 친구 함수친구 함수는 클래스의 비공개 및 보호 멤버에 액세스할 수 있습니다.
C++ 인라인 함수인라인 함수를 사용하면 컴파일러는 함수가 호출되는 지점에서 함수 본문의 코드를 확장하려고 시도합니다.
C++의 이 포인터모든 객체에는 객체 자체를 가리키는 특수 포인터 this가 있습니다.
C++의 클래스에 대한 포인터 클래스에 대한 포인터는 구조에 대한 포인터처럼 동작합니다. 실제로 클래스는 함수가 포함된 구조로 생각할 수 있습니다.
C++ 클래스의 정적 멤버클래스의 데이터 멤버와 함수 멤버 모두 정적으로 선언할 수 있습니다.