C++¤Î¾ì¹ç¡¢¥ê¥Õ¥¡¥ì¥ó¥¹¤Ï½é´ü²½»þ¤Î¤ß»²¾ÈÀè¤Î»ØÄ꤬²Äǽ¤Ç¡¢ °Ê¹ß¡¢»²¾ÈÀè¤òÊѤ¨¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£(¤´Â¸ÃΤÎÄ̤ꡢ)¥Ý¥¤¥ó¥¿¤Ï ¥¢¥É¥ì¥¹¤ÎºÆÂåÆþ¤Ë¤è¤ê²¿Å٤Ǥ⻲¾ÈÀè¤òÊѤ¨¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ ´û¤Ë¥Ý¥¤¥ó¥¿¤¬¤¢¤ë¤Î¤Ç¡¢¥ê¥Õ¥¡¥ì¥ó¥¹¤Ë¾åµ¤Î¤è¤¦¤ÊÀ©¸Â¤¬²Ã¤¨¤é¤ì¤Æ ¤¤¤ë¤Î¤À¤È²ò¼á¤·¤Æ¤¤¤Þ¤¹¡£
Ruby(Java)¤ÈC++¤Î¥ê¥Õ¥¡¥ì¥ó¥¹(»²¾È)¤Î°ã¤¤ - ¥¨¥ó¥¸¥Ë¥¢&Rubyist¤ÎÅÌÁ³¤Ê¤ë¤Þ¤Þ¤Ë
¤Ç¤¤ë¤È»×¤¦¤ó¤À¤±¤É¡£
#include <iostream>
class Foo {
int x_;
public:
explicit Foo(int x) : x_(x) { }
int val() { return x_; }
};
int main(int argc, char** argv) {
using namespace std;
Foo f(1);
Foo& fr = f;
cout << fr.val() << endl;
Foo g(2);
fr = g;
cout << fr.val() << endl;
// fr = 0; // ̵Íý
return 0;
}
̵Íý¤Ã¤Æ¥³¥á¥ó¥ÈÆþ¤ì¤Æ¤ë¹Ô¤Ï¥³¥ó¥Ñ¥¤¥ë¥¨¥é¡¼¤Ë¤Ê¤ë¡£C++ ¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤Ï¼ÂÂΤ¢¤ê¤¤À¤«¤é¡¢¥Ý¥¤¥ó¥¿¤ß¤¿¤¤¤Ë NULL ¥Ý¥¤¥ó¥¿¤ò»Ø¤µ¤»¤ë¤è¤¦¤Ê¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£¥Ý¥¤¥ó¥¿¤Ï "¤¢¤ë·¿¤Î¼ÂÂΤò»Ø¤¹¥¢¥É¥ì¥¹Ãͤη¿" ¤À¤«¤é¡¢¥¢¥É¥ì¥¹¤ÎÂåÆþ¤Ë¤è¤Ã¤Æ¤¤¤¯¤é¤Ç¤â»²¾ÈÀè¤òÂØ¤¨¤ë¤³¤È¤¬¤Ç¤¤ë¡£¤È»×¤¦¡£