--/--/--

¥¹¥Ý¥ó¥µ¡¼¥µ¥¤¥È

¾åµ­¤Î¹­¹ð¤Ï£±¥ö·î°Ê¾å¹¹¿·¤Î¤Ê¤¤¥Ö¥í¥°¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¿·¤·¤¤µ­»ö¤ò½ñ¤¯»ö¤Ç¹­¹ð¤¬¾Ã¤»¤Þ¤¹¡£

2009/06/05

C++ ¤Î»²¾È

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 ¥Ý¥¤¥ó¥¿¤ò»Ø¤µ¤»¤ë¤è¤¦¤Ê¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£¥Ý¥¤¥ó¥¿¤Ï "¤¢¤ë·¿¤Î¼ÂÂΤò»Ø¤¹¥¢¥É¥ì¥¹Ãͤη¿" ¤À¤«¤é¡¢¥¢¥É¥ì¥¹¤ÎÂåÆþ¤Ë¤è¤Ã¤Æ¤¤¤¯¤é¤Ç¤â»²¾ÈÀè¤òÂØ¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¤È»×¤¦¡£

trackback

trackback url: http://talototo.blog48.fc2.com/tb.php/451-a5f19dbd

comment

by bleis-tift : 2009/06/05 11:07
¤Ï¤¸¤á¤Þ¤·¤Æ¡£
C++ ¤Ç»²¾È¤¬°ì²ó¤·¤«ÀßÄê½ÐÍè¤Ê¤¤¤È¤¤¤¦¤Î¤Ï¡¢
fr = g;
¤ò¹Ô¤Ã¤¿¤È¤·¤Æ¤â fr ¤Ï f ¤Ç¤¢¤ë¡¢¤È¤¤¤¦¤³¤È¤Ç¤¹¡£
°Ê²¼¤Î¥³¡¼¥É¤ò¼Â¹Ô¤¹¤ì¤Ð¤É¤¦¤¤¤¦¤³¤È¤«Ê¬¤«¤ë¤Ç¤·¤ç¤¦¡£

#include <iostream>

struct hoge
{
¡¡¡¡int x;
¡¡¡¡hoge(int x) : x(x) {}
};

int main()
{
¡¡¡¡hoge h = 1;
¡¡¡¡hoge& hr = h;
¡¡¡¡std::cout << hr.x << std::endl;

¡¡¡¡hoge h2 = 2;
¡¡¡¡hr = h2;
¡¡¡¡std::cout << hr.x << std::endl;
¡¡¡¡std::cout << h.x << std::endl;

¡¡¡¡h2.x = 0;
¡¡¡¡std::cout << hr.x << std::endl;
¡¡¡¡std::cout << h.x << std::endl;
}
by talo : 2009/06/05 15:55
¤Ê¤ë¤Û¤É¡¼¡£¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£
post