C 언어
이 튜토리얼에서는 예제를 통해 C++로 friend 함수와 friend 클래스를 만드는 방법을 배웁니다.
데이터 은닉은 객체 지향 프로그래밍의 기본 개념입니다. 클래스 외부에서 private 멤버의 액세스를 제한합니다.
마찬가지로 보호된 멤버는 파생 클래스에서만 액세스할 수 있으며 외부에서는 액세스할 수 없습니다. 예를 들어,
class MyClass {
private:
int member1;
}
int main() {
MyClass obj;
// Error! Cannot access private members from here.
obj.member1 = 5;
}
그러나 C++에는 친구 함수라는 기능이 있습니다. 이 규칙을 어기고 클래스 외부에서 멤버 함수에 액세스할 수 있습니다.
마찬가지로 친구 클래스가 있습니다. 이 튜토리얼의 뒷부분에서 배울 것입니다.
<시간>
친구 기능 비공개 액세스 가능 및 보호 클래스의 데이터. friend
을 사용하여 friend 함수를 선언합니다. 클래스 본문 내부의 키워드입니다.
class className {
... .. ...
friend returnType functionName(arguments);
... .. ...
}
<시간>
// C++ program to demonstrate the working of friend function
#include <iostream>
using namespace std;
class Distance {
private:
int meter;
// friend function
friend int addFive(Distance);
public:
Distance() : meter(0) {}
};
// friend function definition
int addFive(Distance d) {
//accessing private members from the friend function
d.meter += 5;
return d.meter;
}
int main() {
Distance D;
cout << "Distance: " << addFive(D);
return 0;
}
출력
Distance: 5
여기 addFive()
비공개에 모두 액세스할 수 있는 친구 기능입니다. 및 공개 데이터 멤버.
이 예는 친구 기능의 개념에 대한 아이디어를 제공하지만 의미 있는 사용을 보여주지는 않습니다.
더 의미 있는 사용은 서로 다른 두 클래스의 개체에서 작동하는 것입니다. 그럴 때 친구 기능이 매우 유용할 수 있습니다.
<시간>
// Add members of two different classes using friend functions
#include <iostream>
using namespace std;
// forward declaration
class ClassB;
class ClassA {
public:
// constructor to initialize numA to 12
ClassA() : numA(12) {}
private:
int numA;
// friend function declaration
friend int add(ClassA, ClassB);
};
class ClassB {
public:
// constructor to initialize numB to 1
ClassB() : numB(1) {}
private:
int numB;
// friend function declaration
friend int add(ClassA, ClassB);
};
// access members of both classes
int add(ClassA objectA, ClassB objectB) {
return (objectA.numA + objectB.numB);
}
int main() {
ClassA objectA;
ClassB objectB;
cout << "Sum: " << add(objectA, objectB);
return 0;
}
출력
Sum: 13
이 프로그램에서 ClassA
및 ClassB
add()
을(를) 선언했습니다. 친구 기능으로. 따라서 이 기능은 비공개 두 클래스의 데이터입니다.
여기서 주목해야 할 한 가지는 ClassA
내부의 friend 함수입니다. ClassB
을(를) 사용 중입니다. . 그러나 ClassB
를 정의하지 않았습니다. 이 시점에서.
// inside classA
friend int add(ClassA, ClassB);
이것이 작동하려면 ClassB
의 전방 선언이 필요합니다. 우리 프로그램에서.
// forward declaration
class ClassB;
<시간>
friend
을 사용하여 C++에서 친구 클래스를 사용할 수도 있습니다. 예어. 예를 들어,
class ClassB;
class ClassA {
// ClassB is a friend class of ClassA
friend class ClassB;
... .. ...
}
class ClassB {
... .. ...
}
클래스가 friend 클래스로 선언되면 friend 클래스의 모든 멤버 함수는 friend 함수가 됩니다.
ClassB
이후 친구 클래스이므로 ClassA
의 모든 구성원에 액세스할 수 있습니다. ClassB
내부에서 .
그러나 ClassB
의 구성원에 액세스할 수 없습니다. ClassA
내부에서 . C++에서 친구관계는 허락만 받고 받는 것이 아니기 때문입니다.
// C++ program to demonstrate the working of friend class
#include <iostream>
using namespace std;
// forward declaration
class ClassB;
class ClassA {
private:
int numA;
// friend class declaration
friend class ClassB;
public:
// constructor to initialize numA to 12
ClassA() : numA(12) {}
};
class ClassB {
private:
int numB;
public:
// constructor to initialize numB to 1
ClassB() : numB(1) {}
// member function to add numA
// from ClassA and numB from ClassB
int add() {
ClassA objectA;
return objectA.numA + numB;
}
};
int main() {
ClassB objectB;
cout << "Sum: " << objectB.add();
return 0;
}
출력
Sum: 13
여기, ClassB
ClassA
의 친구 클래스입니다. . 따라서 ClassB
classA
의 구성원에 대한 액세스 권한이 있습니다. .
ClassB
에서 , add()
함수를 만들었습니다. numA의 합계를 반환합니다. 및 numB .
ClassB
이후 친구 클래스이므로 ClassA
의 개체를 만들 수 있습니다. ClassB
내부 .
C 언어
Python 개체 및 클래스 이 자습서에서는 Python 개체 및 클래스의 핵심 기능에 대해 배웁니다. 클래스가 무엇인지, 클래스를 만들고 프로그램에서 사용하는 방법을 배우게 됩니다. 동영상:Python 클래스 및 개체 Python 객체 및 클래스 파이썬은 객체 지향 프로그래밍 언어입니다. 함수에 중점을 둔 프로시저 지향 프로그래밍과 달리 객체 지향 프로그래밍은 객체에 중점을 둡니다. 객체는 단순히 데이터(변수)와 해당 데이터에 작용하는 메서드(함수)의 모음입니다. 마찬가지로 클래스는 해당 개체의 청사진입니다. 우리는 클래
수업이란 무엇입니까? C++ 클래스는 데이터와 데이터를 조작하기 위한 메서드를 하나로 결합합니다. 클래스는 또한 객체의 형태를 결정합니다. 클래스에 포함된 데이터와 메서드를 클래스 멤버라고 합니다. 클래스는 사용자 정의 데이터 유형입니다. 클래스 멤버에 액세스하기 위해 클래스의 인스턴스를 사용합니다. 클래스를 개체에 대한 청사진으로 볼 수 있습니다. 클래스는 집의 프로토타입이 됩니다. 문, 창문, 바닥 등의 위치와 크기를 보여줍니다. 이러한 설명에서 집을 지을 수 있습니다. 집이 대상이 됩니다. 프로토타입으로 많은 집을 만들 수