산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

예제가 있는 C++ 클래스 및 개체

수업이란 무엇입니까?

C++ 클래스는 데이터와 데이터를 조작하기 위한 메서드를 하나로 결합합니다. 클래스는 또한 객체의 형태를 결정합니다. 클래스에 포함된 데이터와 메서드를 클래스 멤버라고 합니다. 클래스는 사용자 정의 데이터 유형입니다. 클래스 멤버에 액세스하기 위해 클래스의 인스턴스를 사용합니다. 클래스를 개체에 대한 청사진으로 볼 수 있습니다.

클래스는 집의 프로토타입이 됩니다. 문, 창문, 바닥 등의 위치와 크기를 보여줍니다. 이러한 설명에서 집을 지을 수 있습니다. 집이 대상이 됩니다. 프로토타입으로 많은 집을 만들 수 있습니다. 또한 클래스에서 많은 개체를 생성하는 것도 가능합니다.

위의 그림에는 싱글 하우스 프로토타입이 있습니다. 이 프로토타입에서 다른 기능을 가진 두 개의 집을 만들었습니다.

이 자습서에서는 다음을 배우게 됩니다.

클래스 선언

C+에서 클래스는 class 키워드를 사용하여 정의됩니다. 그 뒤에는 클래스 이름이 와야 합니다. 그런 다음 클래스 본문이 중괄호 { } 사이에 추가됩니다.

구문:

class class-name
   {
   // data
   // functions
   };

비공개 및 공개 키워드

이 두 가지 키워드를 접했을 것입니다. 액세스 수정자입니다.

private 키워드를 사용하여 함수나 클래스를 정의하면 private가 됩니다. 이러한 항목은 클래스 내에서만 액세스할 수 있습니다.

반면에 public 키워드는 데이터/기능을 공개합니다. 수업 외부에서 액세스할 수 있습니다.

객체 정의

객체는 클래스에서 생성됩니다. 클래스 객체는 변수 선언과 유사한 방식으로 선언됩니다. 클래스 이름이 시작되어야 하고 그 뒤에 개체 이름이 와야 합니다. 클래스 유형의 개체입니다.

구문:

class-name object-name;

클래스에서 개체를 만드는 이 프로세스를 인스턴스화라고 합니다.

데이터 멤버 액세스

클래스의 공용 멤버에 액세스하려면 (.) 점 연산자를 사용합니다. public access modifier로 표시된 멤버입니다.

예시 1:

#include <iostream>
using namespace std;
class Phone {
public:
	double cost;   
	int slots; 
};
int main() {
	Phone Y6;        
	Phone Y7;        

	Y6.cost = 100.0;
	Y6.slots = 2;

	Y7.cost = 200.0;
	Y7.slots = 2;
	cout << "Cost of Huawei Y6 : " << Y6.cost << endl;
	cout << "Cost of Huawei Y7 : " << Y7.cost << endl;

	cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl;
	cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl;

	return 0;
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명 :

  1. 해당 기능을 사용하려면 코드에 iostream 헤더 파일을 포함하세요.
  2. 클래스를 호출하지 않고 클래스를 사용하기 위해 코드에 std 네임스페이스를 포함합니다.
  3. Phone이라는 클래스를 선언합니다.
  4. 공개 액세스 수정자를 사용하여 생성하려는 변수를 공개적으로 액세스 가능한 것으로 표시합니다.
  5. 이중 데이터 유형의 가변 비용을 선언합니다.
  6. slots라는 이름의 정수 변수를 선언합니다.
  7. 클래스 본문 끝.
  8. main() 함수를 호출합니다. 프로그램 로직은 본문 내에 추가되어야 합니다.
  9. 전화 유형의 Y6이라는 개체를 만듭니다. 이것을 인스턴스화라고 합니다.
  10. 전화 유형의 Y7이라는 개체를 만듭니다. 이것을 인스턴스화라고 합니다.
  11. Y6 개체를 사용하여 Phone 클래스의 변수/구성원 비용에 액세스합니다. 값은 100.0으로 설정됩니다. Y6의 비용은 이제 100.0으로 설정됩니다.
  12. Y6 개체를 사용하여 Phone 클래스의 변수/멤버 슬롯에 액세스합니다. 값은 2로 설정됩니다. Y6의 슬롯은 이제 2로 설정됩니다.
  13. Y7 개체를 사용하여 Phone 클래스의 변수/구성원 비용에 액세스합니다. 값은 200.0으로 설정됩니다. Y7의 비용은 이제 200.0으로 설정됩니다.
  14. Y7 개체를 사용하여 Phone 클래스의 변수/멤버 슬롯에 액세스합니다. 값은 2로 설정됩니다. Y7의 슬롯은 이제 2로 설정됩니다.
  15. 다른 텍스트와 함께 콘솔에 Y6 비용을 인쇄합니다.
  16. 다른 텍스트와 함께 콘솔에 Y7 비용을 인쇄합니다.
  17. Y6의 슬롯 수를 다른 텍스트와 함께 인쇄합니다.
  18. Y7의 슬롯 수를 다른 텍스트와 함께 인쇄하십시오.
  19. 프로그램은 성공적으로 완료되면 값을 반환해야 합니다.
  20. main() 함수 본문의 끝.

개인 수업이란 무엇입니까?

private으로 표시된 클래스 멤버는 클래스 내에 정의된 함수에서만 액세스할 수 있습니다. 클래스 외부에 정의된 개체 또는 함수는 이러한 멤버에 직접 액세스할 수 없습니다. private 클래스 멤버는 멤버 및 friend 함수에서만 액세스할 수 있습니다.

보호 클래스란 무엇입니까?

보호됨으로 표시된 클래스 구성원은 비공개로 표시된 클래스 구성원보다 이점이 있습니다. 정의 클래스 내의 함수에서 액세스할 수 있습니다. 또한 파생 클래스에서 액세스할 수 있습니다.

예시 2:

#include <iostream>
using namespace std;
class ClassA {
public:
	void set_a(int val);
	int get_a(void);

private:
	int a;
};
int ClassA::get_a(void) {
	return a;
}
void ClassA::set_a(int val) {
	a = val;
}
int main() {
	ClassA a;
	a.set_a(20); 
	cout << "Value of a is: " << a.get_a(); 
	return 0;
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명:

  1. 해당 기능을 사용하려면 코드에 iostream 헤더 파일을 포함하세요.
  2. 코드에 std 네임스페이스를 포함하여 호출하지 않고 해당 클래스를 사용합니다.
  3. ClassA라는 클래스를 만듭니다.
  4. 공개 액세스 한정자를 사용하여 생성할 클래스 멤버를 공개적으로 액세스 가능한 것으로 표시합니다.
  5. 하나의 정수 값 val을 사용하는 set_a()라는 함수를 만듭니다.
  6. get_a()라는 함수를 만듭니다.
  7. 비공개 액세스 수정자를 사용하여 생성할 클래스 멤버를 비공개 액세스로 표시합니다.
  8. 정수 변수를 선언합니다.
  9. 클래스 본문 끝.
  10. 클래스 이름과 범위 확인 연산자를 사용하여 get_a() 함수에 액세스합니다. 호출 시 함수가 수행하는 작업을 정의하려고 합니다.
  11. get_a() 함수는 호출 시 변수 값을 반환해야 합니다.
  12. get_a() 함수 정의 끝.
  13. 클래스 이름과 범위 확인 연산자를 사용하여 set_a() 함수에 액세스합니다. 호출 시 함수가 수행하는 작업을 정의하려고 합니다.
  14. 변수 val의 값을 변수 a에 할당
  15. set_a() 함수 정의 끝.
  16. main() 함수를 호출합니다. 이 함수의 본문에 프로그램 로직을 추가해야 합니다.
  17. ClassA의 인스턴스를 만들고 이름을 지정합니다.
  18. 위의 클래스 인스턴스와 set_a() 함수를 사용하여 변수 a에 값 20을 할당합니다.
  19. 콘솔에서 변수 a의 값과 함께 일부 텍스트를 인쇄합니다. 변수 a의 값은 get_a() 함수를 호출하여 얻습니다.
  20. 프로그램은 성공적으로 완료되면 값을 반환해야 합니다.
  21. main() 함수 본문의 끝.

예시 3:

#include <iostream>
using namespace std;
class ParentClass {
protected:
	int value;
};
class ChildClass : public ParentClass {
public:
	void setId(int x) {
		value = x;
	}
	void displayValue() {
	cout << "Value is: " << value << endl;
	}
};
int main() {
	ChildClass c;
	c.setId(21);
	c.displayValue();
	return 0;
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명:

  1. 해당 기능을 사용하려면 코드에 iostream 헤더 파일을 포함하세요.
  2. 코드에 std 네임스페이스를 포함하여 호출하지 않고 해당 클래스를 사용합니다.
  3. ParentClass라는 클래스를 만듭니다.
  4. 보호된 액세스 수정자를 사용하여 생성할 클래스 구성원을 보호된 것으로 표시합니다.
  5. value라는 이름의 정수 변수를 만듭니다.
  6. 클래스 본문 끝.
  7. ParentClass를 상속하는 ChildClass라는 새 클래스를 만듭니다.
  8. 보호된 액세스 수정자를 사용하여 생성할 클래스 멤버를 하위 클래스가 액세스할 수 있는 것으로 표시합니다.
  9. 하나의 정수 값 x를 사용하는 setId()라는 함수를 만듭니다.
  10. 변수 x의 값을 변수 값에 할당합니다.
  11. setId() 함수 정의 끝.
  12. displayValue()라는 함수를 만듭니다.
  13. 다른 텍스트와 함께 콘솔에 value라는 변수의 값을 인쇄합니다.
  14. displayValue() 함수 본문의 끝.
  15. ChildClass라는 클래스 본문의 끝입니다.
  16. main() 함수를 호출합니다. 이 함수의 본문에 프로그램 로직을 추가해야 합니다.
  17. ChildClass의 인스턴스를 만들고 이름을 c로 지정합니다.
  18. 위의 클래스 인스턴스와 setId() 함수를 사용하여 변수 x에 값 21을 할당합니다.
  19. 위의 클래스 인스턴스를 사용하여 displayValue()라는 함수를 호출합니다.
  20. 프로그램은 성공적으로 완료되면 값을 반환해야 합니다.
  21. main() 함수 본문의 끝.

클래스 멤버 함수

함수는 데이터를 조작하는 데 도움이 됩니다. 클래스 멤버 함수는 두 가지 방법으로 정의할 수 있습니다.

함수가 클래스 정의 외부에서 정의되어야 하는 경우 범위 확인 연산자(::)를 사용해야 합니다. 여기에는 클래스 및 함수 이름이 수반되어야 합니다.

예시 2:

#include <iostream>
#include <string>
using namespace std;
class Guru99
{
public:
	string tutorial_name;
	int id;
	void printname();
	void printid()
	{
		cout << "Tutorial id is: "<< id;
	}
};
void Guru99::printname()
{
	cout << "Tutorial name is: " << tutorial_name;
}
int main() {
	Guru99 guru99;
	guru99.tutorial_name = "C++";
	guru99.id = 1001;
	guru99.printname();
	cout << endl;
	guru99.printid();
	return 0;
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명:

  1. iostream 헤더 파일을 프로그램에 포함하여 기능을 사용하세요.
  2. 기능을 사용하려면 프로그램에 문자열 헤더 파일을 포함합니다.
  3. 코드에 std 네임스페이스를 포함하여 호출하지 않고 해당 클래스를 사용합니다.
  4. Guru99라는 클래스를 만듭니다.
  5. 공개 액세스 한정자를 사용하여 생성하려는 클래스 구성원을 공개적으로 액세스 가능한 것으로 표시합니다.
  6. tutorial_name이라는 문자열 변수를 생성합니다.
  7. id라는 정수 변수를 생성합니다.
  8. printname()이라는 함수를 만듭니다. 이 함수는 클래스 정의 내에 정의되어 있지 않습니다.
  9. printed()라는 함수를 만듭니다. 이 함수는 클래스 정의 내에서 정의됩니다. 클래스 정의 내에 본문이 추가되었습니다.
  10. 변수 id의 값을 콘솔의 다른 텍스트와 함께 인쇄합니다. 이것은 printid() 함수의 본문에 추가되었습니다. printid() 함수가 호출될 때만 실행됩니다.
  11. printid() 함수 본문의 끝.
  12. Guru99 클래스 본문의 끝
  13. printname() 함수 정의 시작
  14. 다른 텍스트와 함께 콘솔에 tutorial_name 변수의 값을 인쇄합니다. 이것은 printname() 함수의 본문에 추가되었습니다. printname() 함수가 호출될 때만 실행됩니다.
  15. printname() 함수 정의 끝.
  16. main() 함수를 호출합니다. 이 함수의 본문에 프로그램 로직을 추가해야 합니다.
  17. Guru99 클래스의 인스턴스를 만들고 이름을 guru99로 지정합니다.
  18. 위의 인스턴스를 사용하여 tutorial_name 변수에 C++ 값을 할당합니다.
  19. guru99 인스턴스를 사용하여 id 변수에 값 1001을 할당합니다.
  20. 인스턴스 guru99를 사용하여 printname() 함수를 호출합니다.
  21. end(end line) 명령을 호출하여 콘솔에 새 빈 줄을 인쇄합니다.
  22. 인스턴스 guru99를 사용하여 printid() 함수를 호출합니다.
  23. 프로그램은 성공적으로 완료되면 값을 반환해야 합니다.
  24. main() 함수 본문의 끝.

생성자와 소멸자

생성자란 무엇입니까?

구문은 객체를 초기화하는 특수 함수입니다. C++ 컴파일러는 객체를 생성할 때 생성자를 호출합니다. 생성자는 클래스 구성원에게 값을 할당하는 데 도움이 됩니다. 물론 이것은 메모리 공간이 할당된 후입니다.

소멸자란 무엇입니까?

반면 소멸자는 클래스 개체를 파괴하는 데 도움이 됩니다.

생성자 이름은 클래스 이름과 유사해야 합니다. 생성자에는 반환 유형이 없습니다.

생성자는 클래스 본문 내부 또는 외부에서 정의할 수 있습니다. 클래스 본문 외부에 정의된 경우 클래스 이름과 범위 확인 연산자(::)를 사용하여 정의해야 합니다.

예시 3:

#include <iostream>  
using namespace std;
class ClassA {
public:
	ClassA() {
		cout << "Class constructor called"<<endl;
	}
	~ClassA() {
		cout << "Class destructor called"<<endl;
	}
};

int main() {
	ClassA a;
	int p = 1;
		if (p) {
			ClassA b; 
		}   
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명:

  1. iostream 헤더 파일을 코드에 포함하여 해당 기능을 사용하세요.
  2. 코드에 std 네임스페이스를 포함하여 호출하지 않고 해당 클래스를 사용합니다.
  3. ClassA라는 클래스를 만듭니다.
  4. 공개 액세스 한정자를 사용하여 만들려는 회원을 공개적으로 액세스 가능한 것으로 표시합니다.
  5. 클래스의 생성자를 생성합니다.
  6. 생성자가 호출될 때 콘솔에 인쇄할 텍스트입니다. endl은 끝줄을 의미하는 C++ 키워드입니다. 마우스 커서를 다음 줄로 이동합니다.
  7. 클래스 생성자의 본문 끝.
  8. 클래스의 소멸자를 만듭니다.
  9. 소멸자가 호출될 때 콘솔에 인쇄할 텍스트입니다. endl은 끝줄을 의미하는 C++ 키워드입니다. 마우스 커서를 다음 줄로 이동합니다.
  10. 소멸자 본문의 끝입니다.
  11. 클래스 본문 끝.
  12. main() 함수를 호출합니다. 이 함수의 본문에 프로그램 로직을 추가해야 합니다.
  13. 클래스 개체를 만들고 이름을 지정합니다. 생성자가 호출됩니다.
  14. p라는 정수 변수를 만들고 값 1을 할당합니다.
  15. 변수 p를 사용하여 if 문 블록을 만듭니다.
  16. 클래스 개체를 만들고 이름을 지정합니다. b. 소멸자가 호출됩니다.
  17. if 문의 본문 끝.
  18. main() 함수 본문의 끝입니다.

요약:


C 언어

  1. C# 클래스 및 개체
  2. C++ 클래스 및 개체
  3. C++ friend 함수 및 friend 클래스
  4. C++ 클래스 템플릿
  5. 예제가 있는 C++의 연산자:정의, 유형 및 프로그램
  6. EXAMPLE이 있는 C++ Switch Case 문
  7. 예제를 사용한 C++ 배열 동적 할당
  8. 예제가 있는 C++ 구조체
  9. 예제가 있는 C++의 std::list
  10. 구조체와 클래스의 차이점:C++ 예제로 설명