c++におけるストリームオペレータの再ロードの理解

681 ワード

IOメンバー関数のリロードはメンバー関数の方法ではなく、友元として宣言する必要があります.
一、メンバー関数の場合、誰かのパラメータ、すなわちthisポインタが左のオペランドであり、メンバー関数として宣言する方法を考える
cout<の場合
t<の場合
ostream& operator<

ここでcoutは左操作数、tは右操作数に一致し、ここでcoutはtと一致し、tはcoutと一致し、矛盾する.
二、グローバルな関数であるべきである
自分のグローバル関数にthisポインタの問題はないので、通常の方法で呼び出すことができます.
cout<
最終的な実装は
test.h
#ifndef TEST
#define TEST
#include 

using namespace std;

class Test{
public:
	Test(int,int);
	ostream& operator<

test.cpp
#include "test.h"

Test::Test(int a,int b){
	this->a=a;
	this->b=b;
}

ostream& operator<