c++?????????
???????????? ???????[ 2012/9/10 10:14:21 ] ????????
?????????洢??????????????????????????????仯???????????????????????????????????????????????????????в?ε?????????????????????в?????????????????????????????????????????????仯??????????????????????????????????????????
??????????в?ε????????????????????????
????1??????κα???????????????????????????????Щ??????????в?ε???????????????????????????????
????2???????????????????λ???????μ?в?Σ?????????μ?в?Σ??????????????????????е????
????????????????Sale_item??????????????Item_base??Σ?Sales_item??????????????????????????????Sals_item????Item_base???????????*??—>?????????Item_base???????
???????磺Sale_item item(Bulk_item("0-102-34529"??35??4??43));
????item->net_price();//item????????????
??????????????????????????Sales_item??????????????????????Sales_item???????????ú??????????????????
????Sales_item????????????????????????????????Item_base??????????????????????ü?????Item_base?????????Item_base ????????Item_base ??????????????????????ü????????Sale_item??????????????????????
class Sales_item
{
public:
Sales_item():p(0)??use(new size_t(1)){}
Sales_item(const Item_base&);
Sales_item(const Sales_item &i):p(i.p)??use(i.use)
{
++*use;
}
~Sales_item(){dec_use();};
Sales_item& operator=(const Sales_item&);
const Item_base *operator->()const{if(p) return p;}
const Item_base& operator*()const{if(p) return *p;}
private:
Item_base *p;
size_t *use;
void dec_use()
{if(--*use==0){delete p;delete use;}}
};
Sales_item& Sales_item::operator=(const Sales_item& i)
{
++*i.use;
dec_use();
p=i.p;
use=i.use;
return *this;
}
????????Item_base????????????????????????????????????????蹹????????????????????????????????Item_base???????????????????????????????????????????????????????????????????????????????????÷????????????????и???????????ò???clone
class Item_base
{
public:
virtual Item_base* clone()const
{
return new Item_base(*this);
}
};
class Bulk_item:public Item_base
{
public:
Bulk_item* clont()const
{
return new Bulk_item(*this);
}
};
Sales_item::Sales_item(const Item_base &item):p(item.clone())??use(new size_t(1)){}
???????????????????????????????????????ü????????????βε?clone?????????????鴟????????????Item_base??????????Item_base??clone???????????Bulk_item?????????????clone??????
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11