C 언어
이 튜토리얼에서는 예제를 통해 C++에서 public, protected 및 private 상속을 사용하는 방법을 배웁니다.
C++ 상속에서 다른 액세스 모드의 기본 클래스에서 자식 클래스를 파생할 수 있습니다. 예를 들어,
class Base {
.... ... ....
};
class Derived : public Base {
.... ... ....
};
키워드 public에 주목하세요. 코드에서
class Derived : public Base 즉, 공개 모드의 기본 클래스에서 파생된 클래스를 만들었습니다. . 또는 protected에서 클래스를 파생시킬 수도 있습니다. 또는 비공개 모드.
이 3개의 키워드(public , protected , 및 private )는 액세스 지정자로 알려져 있습니다. C++ 상속에서.
공개 , 보호됨, 및 비공개 상속에는 다음과 같은 기능이 있습니다.
public을 만듭니다. 기본 클래스 public의 멤버 파생 클래스 및 protected 기본 클래스의 구성원은 protected로 유지됩니다. 파생 클래스에서.public을 만듭니다. 및 protected 기본 클래스 protected의 멤버 파생 클래스에서.public을 만듭니다. 및 protected 기본 클래스 private의 멤버 파생 클래스에서.
참고: private 기본 클래스의 멤버는 파생 클래스에 액세스할 수 없습니다.
class Base {
public:
int x;
protected:
int y;
private:
int z;
};
class PublicDerived: public Base {
// x is public
// y is protected
// z is not accessible from PublicDerived
};
class ProtectedDerived: protected Base {
// x is protected
// y is protected
// z is not accessible from ProtectedDerived
};
class PrivateDerived: private Base {
// x is private
// y is private
// z is not accessible from PrivateDerived
} <시간>
// C++ program to demonstrate the working of public inheritance
#include <iostream>
using namespace std;
class Base {
private:
int pvt = 1;
protected:
int prot = 2;
public:
int pub = 3;
// function to access private member
int getPVT() {
return pvt;
}
};
class PublicDerived : public Base {
public:
// function to access protected member from Base
int getProt() {
return prot;
}
};
int main() {
PublicDerived object1;
cout << "Private = " << object1.getPVT() << endl;
cout << "Protected = " << object1.getProt() << endl;
cout << "Public = " << object1.pub << endl;
return 0;
} 출력
Private = 1 Protected = 2 Public = 3
여기에서 PublicDerived을 도출했습니다. Base에서 공개 모드에서 .
결과적으로 PublicDerived에서 :
getPVT() 공개로 상속됨 .Base .
비공개 이후 및 보호 구성원은 main()에서 액세스할 수 없습니다. , 공개 함수 getPVT()를 만들어야 합니다. 및 getProt() 액세스하려면:
// Error: member "Base::pvt" is inaccessible
cout << "Private = " << object1.pvt;
// Error: member "Base::prot" is inaccessible
cout << "Protected = " << object1.prot;
getPVT() 함수가 Base 안에 정의되었습니다. . 하지만 getProt() 함수가 PublicDerived 안에 정의되었습니다. .
pvt 때문입니다. , 비공개 Base에서 , PublicDerived에 액세스할 수 없습니다. .
그러나 prot PublicDerived에 액세스할 수 있습니다. 공개 상속 때문입니다. 따라서 getProt() PublicDerived 내에서 보호된 변수에 액세스할 수 있습니다. .
| 접근성 | 비공개 회원 | 보호된 회원 | 공개 회원 |
|---|---|---|---|
| 기본 클래스 | 예 | 예 | 예 |
| 파생 클래스 | 아니요 | 예 | 예 |
// C++ program to demonstrate the working of protected inheritance
#include <iostream>
using namespace std;
class Base {
private:
int pvt = 1;
protected:
int prot = 2;
public:
int pub = 3;
// function to access private member
int getPVT() {
return pvt;
}
};
class ProtectedDerived : protected Base {
public:
// function to access protected member from Base
int getProt() {
return prot;
}
// function to access public member from Base
int getPub() {
return pub;
}
};
int main() {
ProtectedDerived object1;
cout << "Private cannot be accessed." << endl;
cout << "Protected = " << object1.getProt() << endl;
cout << "Public = " << object1.getPub() << endl;
return 0;
}
출력
Private cannot be accessed. Protected = 2 Public = 3
여기에서 ProtectedDerived을 도출했습니다. Base에서 보호 모드에서 .
결과적으로 ProtectedDerived에서 :
getPVT() 보호로 상속됨 .pvt 비공개이므로 액세스할 수 없습니다. Base .
우리가 알고 있듯이 보호 회원은 수업 외부에서 직접 액세스할 수 없습니다. 결과적으로 getPVT()을 사용할 수 없습니다. ProtectedDerived에서 .
이것이 getPub()을 생성해야 하는 이유이기도 합니다. ProtectedDerived의 기능 pub에 액세스하려면 변수.
// Error: member "Base::getPVT()" is inaccessible
cout << "Private = " << object1.getPVT();
// Error: member "Base::pub" is inaccessible
cout << "Public = " << object1.pub; <시간> | 접근성 | 비공개 회원 | 보호된 회원 | 공개 회원 |
|---|---|---|---|
| 기본 클래스 | 예 | 예 | 예 |
| 파생 클래스 | 아니요 | 예 | 예(보호된 변수로 상속됨) |
// C++ program to demonstrate the working of private inheritance
#include <iostream>
using namespace std;
class Base {
private:
int pvt = 1;
protected:
int prot = 2;
public:
int pub = 3;
// function to access private member
int getPVT() {
return pvt;
}
};
class PrivateDerived : private Base {
public:
// function to access protected member from Base
int getProt() {
return prot;
}
// function to access private member
int getPub() {
return pub;
}
};
int main() {
PrivateDerived object1;
cout << "Private cannot be accessed." << endl;
cout << "Protected = " << object1.getProt() << endl;
cout << "Public = " << object1.getPub() << endl;
return 0;
} 출력
Private cannot be accessed. Protected = 2 Public = 3
여기에서 우리는 PrivateDerived를 도출했습니다. Base에서 비공개 모드에서 .
결과적으로 PrivateDerived에서 :
pub 및 getPVT() 비공개로 상속됨 .Base .
아시다시피 private 멤버는 클래스 외부에서 직접 액세스할 수 없습니다. 결과적으로 getPVT()을(를) 사용할 수 없습니다. PrivateDerived에서 .
이것이 getPub()를 생성해야 하는 이유이기도 합니다. PrivateDerived의 기능 pub에 액세스하려면 변수.
// Error: member "Base::getPVT()" is inaccessible
cout << "Private = " << object1.getPVT();
// Error: member "Base::pub" is inaccessible
cout << "Public = " << object1.pub; <시간> | 접근성 | 비공개 회원 | 보호된 회원 | 공개 회원 |
|---|---|---|---|
| 기본 클래스 | 예 | 예 | 예 |
| 파생 클래스 | 아니요 | 예(개인 변수로 상속됨) | 예(개인 변수로 상속됨) |
C 언어
C++이란 무엇입니까? C++는 C 프로그래밍 언어의 기능과 Simula67(첫 번째 객체 지향 언어)을 포함하는 컴퓨터 프로그래밍 언어입니다. C++는 클래스와 객체의 개념을 도입했습니다. 고급 및 저급 언어 기능을 캡슐화합니다. 따라서 중급 언어로 간주됩니다. 이전에는 C 언어의 모든 속성을 가지고 있기 때문에 C with classes라고 불렀습니다. C#이란 무엇입니까? C-Sharp는 .Net Framework에서 실행되는 Microsoft에서 개발한 개체 지향 프로그래밍 언어입니다. 강력한 유형 지정, 명령형, 선언
C 프로그래밍 언어란 무엇입니까? C는 Dennis Ritchie가 1972년 Bell Lab에서 개발한 중간 수준 프로그래밍 언어입니다. C 언어는 저수준 언어와 고급 언어의 기능을 결합합니다. 따라서 중급 언어로 간주됩니다. C는 펌웨어 및 휴대용 응용 프로그램을 개발할 수 있는 고급 클래식 유형 프로그래밍 언어입니다. C 언어는 시스템 소프트웨어 작성을 목적으로 개발되었습니다. 펌웨어 시스템 개발에 이상적인 언어입니다. C++ 프로그래밍 언어란 무엇입니까? C++는 C 프로그래밍 언어의 기능과 Simula67(첫 번째 객