学習の4週目:自己インクリメント、自己デクリメントのオペレーターの過負荷

接頭辞++ / –演算子

メンバー関数:

T& operator--()
T& operator++()

グローバル機能

T1& operator--(T2)
T1& operator++(T2)

++ / –演算子の後(もう1つの役に立たないパラメーター)

T& operator--(int)
T& operator++(int)
T1& operator--(T2,int)
T1& operator++(T2,int)

T operator++(int a){
    
    T tmp(*this); n++; return tmp;}
T& operator++(){
    
    ++n; return *this;}
		
friend T& operator--(T& t,int a);
friend T operator--(T& t);


T& operator--(T& t,int a)
{
    
    
	T tmp(t);
	t.n--;
	return tmp;
}

T operator--(T& t)
{
    
    
	t.n--;
	return t;
}
  1. フロントは最初に値を変更してから機能するため、フロントは参照を返します。これは、新しい値であるリファレンスを返すことと同じです。
  2. post-positionは値を返します。これは、post-positionが最初に機能するためです。値を変更すると、実際に機能するものは一時的なコピーと同じになり、実数が変更されたため、値が返されます。
T t(5);
	cout<<(t++)<<", ";
	cout<<t<<", ";
	cout<<(++t)<<", ";
	cout<<t<<endl;
	cout<<(t--)<<", ";
	cout<<t<<", ";
	cout<<(--t)<<", ";
	cout<<t<<endl;

ここに画像の説明を挿入

オペレーターのオーバーロードに関する注意:

  1. 新しい演算子を定義できません
  2. オペレーターは過負荷後の日常生活に順応
  3. 演算子の優先順位を変更しないでください
  4. オーバーロードできません: " "、 "。*"、 "::"、 "?:"、 "sizeof"
  5. ()、[]、->または=は、メンバー関数として宣言する必要があります

おすすめ

転載: blog.csdn.net/ZmJ6666/article/details/108571076