C++ Tutorial/Class/friend operator — различия между версиями

Материал из C\C++ эксперт
Перейти к: навигация, поиск
м (1 версия: Импорт контента...)
 
(нет различий)

Текущая версия на 10:29, 25 мая 2010

Use friend operator functions

#include <iostream> 
using namespace std; 
 
class ThreeD { 
  int x, y, z;
public: 
  ThreeD() { x = y = z = 0; } 
  ThreeD(int i, int j, int k) { x = i; y = j; z = k; } 
 
  friend ThreeD operator+(ThreeD op1, ThreeD op2); 
 
  void show() ; 
} ; 
 
// The + is now a friend function. 
ThreeD operator+(ThreeD op1, ThreeD op2) 
{ 
  ThreeD temp; 
 
  temp.x = op1.x + op2.x;  
  temp.y = op1.y + op2.y;  
  temp.z = op1.z+ op2.z;  
  return temp; 
} 
 
// Show X, Y, Z coordinates. 
void ThreeD::show() 
{ 
  cout << x << ", "; 
  cout << y << ", "; 
  cout << z << "\n"; 
} 
 
int main() 
{ 
  ThreeD a(1, 2, 3), b(10, 10, 10), c; 
 
  cout << "Original value of a: "; 
  a.show(); 
  cout << "Original value of b: "; 
  b.show(); 
 
  c = a + b; // add a and b together 
  cout << "\n Value of c after c = a + b: "; 
  c.show(); 
 
  c = a + b + c; // add a, b and c together 
  cout << "\n Value of c after c = a + b + c: "; 
  c.show(); 
 
  cout << "\n"; 
 
  c = b = a;  // demonstrate multiple assignment 
  cout << "Value of c after c = b = a: "; 
  c.show(); 
  cout << "Value of b after c = b = a: "; 
  b.show(); 
 
  return 0; 
}
Original value of a: 1, 2, 3
Original value of b: 10, 10, 10
 Value of c after c = a + b: 11, 12, 13
 Value of c after c = a + b + c: 22, 24, 26
Value of c after c = b = a: 1, 2, 3
Value of b after c = b = a: 1, 2, 3