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(첫 번째 객