2é æ¼ç®åã®ãªã¼ãã¼ãã¼ã
C++ã§ã¯"+"ã"-"ã¨ãã£ãæ¼ç®åã®ãªã¼ãã¼ãã¼ããå¯è½ã§ããããã使ãã¨ä»¥ä¸ã®ãããªãªãã¸ã§ã¯ãå士ã®è¶³ãç®ãå¼ãç®ã®åä½ãè¦å®ãããã¨ãã§ãã¾ãã
Kitten *mii = new Kitten(); Kitten *tora = new Kitten(); *mii + tora; // ãªãã¸ã§ã¯ãå士ã足ãã
ãããã«ã2é æ¼ç®åããªã¼ãã¼ãã¼ããã¦ã¿ã¾ãã
- æ¼ç®åããªã¼ãã¼ãã¼ãããã«ã¯ãã¯ã©ã¹ã«ã<æ»ãå¤> operator<æ¼ç®å>(<å¼æ°>)ãã¨ããã¡ã½ãããå®ç¾©ãã¾ãã
- å¼æ°ã®åã«ã¯ä»»æã®åãæå®ã§ãã¾ããå¼æ°ã®åãå¤ãã¦ãåãæ¼ç®åãè¤æ°åãªã¼ãã¼ãã¼ããããã¨ãå¯è½ã§ãã
- å¼æ°ã®æ°ã¯1or0ã§ããè¤æ°ã®å¼æ°ãæã¤ãã¨ã¯ã§ãã¾ããã
- æ»ãå¤ã«ãä»»æã®åãæå®ã§ãã¾ãã
#include <iostream> // ã¯ã©ã¹å®ç¾© class Kitten { int age; public : Kitten( int age ); int getAge(); // 2é æ¼ç®åã®ãªã¼ãã¼ãã¼ã Kitten* operator+( Kitten *k ); Kitten* operator+( int i ); // å¼æ°ãintã®ãã®ã// å¼æ°ãéããããªã¼ãã¼ãã¼ãã§ããã int operator-( int i ); // æ»ãå¤ãKittenã§ããå¿ è¦ã¯ãªãã void operator-( ); // å¼æ°ãæ»ãå¤ãªããOK // int operator-( int i, int j ); // å¼æ°2ã¤ã¯ã¨ã©ã¼ã }; Kitten::Kitten( int age ) { this->age = age; } int Kitten::getAge() { return this->age; } Kitten *Kitten::operator+( Kitten *k ) { this->age += k->getAge(); return this; } Kitten *Kitten::operator+( int i ) { this->age += i; return this; } int Kitten::operator-( int i ) { this->age -= i; return this->age; } void Kitten::operator-( ) { this->age -= 1; } // ã¡ã¤ã³é¢æ° int main() { Kitten* mii = new Kitten( 1 ); Kitten* tora = new Kitten( 2 ); Kitten* shiro = *mii + tora; std::cout << shiro->getAge() << std::endl; // 3 shiro = *mii + 10; std::cout << shiro->getAge() << std::endl; // 13 std::cout << (*mii) - 5 << std::endl; // 8 -(*mii) ; std::cout << mii->getAge()<< std::endl; // 7 delete mii; delete tora; return 0; }
å®è¡çµæã§ãã
3 13 8 7