Contents Up << >>

What operators can/cannot be overloaded?

Most can be overloaded. The only C operators that can't be are "." and "?:" (and "sizeof", which is technically an operator). C++ adds a few of its own operators, most of which can be overloaded except "::" and ".*".

Here's an example of the subscript operator (it returns a reference): (First conditional clauses are without operator overloading.)

 	class Array {
	public:
	  #if 0
	    int& elem(unsigned i) { if (i>99) error(); return data[i]; }
 	  #else
	    int& operator[] (unsigned i) { if (i>99) error(); return data[i]; }
 	  #endif
	private:
	  int data[100];
	};

	main()
	{
	  Array a;

	  #if 0
	    a.elem(10) = 42;
	    a.elem(12) += a.elem(13);
	  #else
	    a[10] = 42;
	    a[12] += a[13];
	  #endif
	}