繰り返しブレンドと演算子
📒 こんごうかんすう
メンバー関数ではありませんが、クラスの内部データにアクセスできます.class myClass{
friend void sub(); // 요게 friend
};
void sub()
{
~~~
}
プロトタイプは内部で定義され、ボディは外部で個別に定義されます*
ハイブリッドクラス
同様に、クラス内のデータにアクセスできます.class Employee{
friend class Manager;
};
📒 繰り返し演算子
✔演算子重複フォーマット
반환형 operator연산자(매개변수 목록)
{
...
}
重複演算子の実装方法
1.メンバー関数
2.非メンバー関数(friend)
演算子をメンバー、非メンバー関数として定義します.
1.算術演算
class myClass{
friend void sub(); // 요게 friend
};
void sub()
{
~~~
}
class Employee{
friend class Manager;
};
✔演算子重複フォーマット
반환형 operator연산자(매개변수 목록)
{
...
}
重複演算子の実装方法
1.メンバー関数
2.非メンバー関数(friend)
演算子をメンバー、非メンバー関数として定義します.
1.算術演算
算術演算を実現するメンバー関数
class myClass{
public:
int a;
myClass(int num): a(num){};
myClass operator+(const myClass& cls);
}
myClass operator+(const myClass& cls){
myClass obj(a + cls.a);
return obj;
}
算術演算を実現する非メンバー関数
class myClass{
publid:
int a;
myClass(int num): a(num){};
friend myClass operator+(const myClass& cls1, const myClass& cls2);
}
myClass operator+(const myClass& cls1, const myClass& cls1){
myClass obj(cls1.a + cls2.a);
return obj;
}
2.割当て操作(=)
割り当て演算子のパラメータは、通常、オブジェクトの参照定数です.
これは、コードがオブジェクトにすぎないか、定数ではない可能性があるからです.
割当て演算を実装するメンバー関数
class myClass{
publid:
int a;
myClass(int num): a(num){};
myClass operator=(const myClass& cls);
}
myClass& operator=(const myClass& cls){
this->a = cls.a;
return *this;
}
ex) a1 = a2 = a3;
3.関係演算(=,!=)
class myClass{
publid:
int a;
myClass(int num): a(num){};
friend bool operator==(const myClass& cls1, const myClass& cls2);
}
bool operator==(const myClass& cls1, const myClass& cls1){
return cls1.x == cls2.x
}
4.<,>>演算
ストリームオブジェクト
オブジェクトをメンバー関数として定義した場合、<<左側にオブジェクトが必要な場合はエラーです.
class myClass{
publid:
int a;
myClass(int num): a(num){};
friend ostream& operator<<(ostream os, const myClass& cls);
friend istream& operator<<(istream is, const myClass& cls);
}
ostream& operator<<(ostream os, const myClass& cls){
os << cls.x << endl;
return os;
}
istream& operator<<(istream is, const myClass& cls){
is >> cls.x;
return is;
}
タイプ変換≪作成者の変換|Convert Creator|Eas≫-パラメータを使用する作成者は、他のタイプをクラス・タイプに変更します.
変換演算子-クラスタイプを自動的に別のタイプに変換します.
class book{
public:
int isbn;
string title;
book(){
isbn = 0;
string = "unknown";
}
book(int isbn){
this->isbn = isbn;
this->title = "unknown";
}int main(
book b1 = 9123232;
}
📒 変換演算子 class book{
public:
int isbn;
string title;
book(){
isbn = 0;
string = "unknown";
}
book(int isbn){ ## 변환 생성자
this->isbn = isbn;
this->title = "unknown";
}
operator int() const{ ## 변환 연산자
return isbn;
}
}
int main(
book b1 = 91823213;
int isbn = b1;
}
Reference
この問題について(繰り返しブレンドと演算子), 我々は、より多くの情報をここで見つけました
https://velog.io/@lkm9709/프렌드와-연산자-중복
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
class book{
public:
int isbn;
string title;
book(){
isbn = 0;
string = "unknown";
}
book(int isbn){ ## 변환 생성자
this->isbn = isbn;
this->title = "unknown";
}
operator int() const{ ## 변환 연산자
return isbn;
}
}
int main(
book b1 = 91823213;
int isbn = b1;
}
Reference
この問題について(繰り返しブレンドと演算子), 我々は、より多くの情報をここで見つけました https://velog.io/@lkm9709/프렌드와-연산자-중복テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol