Effective C++读书笔记(六)——设计与声明

 1.必须返回对象时,别妄想返回其reference

class Rational
{
public:
    Rational(int numerator=0,int deominator = 1);
    ...
private:
    int n,d;
    friend const Rational operator*(const Rational& lhs,const Rational& rhs);
}

函数创建新对象可以在stack空间或heap空间创建。
stack空间:
const Rational operator*(const Rational& lhs,const Rational& rhs)
{
    Rational  result(lhs.n*rhs.n, lhs.d*rhs.d); 
    return result;
}
注意:任何函数如果返回一个reference指向某个local对象,而local对象回在函数退出前被销毁,因此返回值无效。(返回一个指针指向某个local对象也是同理)


heap空间:
const Rational& operator*(const Rational& lhs,const Rational& rhs)
{
    Rational*  result = new Rational(lhs.n*rhs.n, lhs.d*rhs.d); 
    return *result;
}
注意:何时调用delete函数释放申请的heap空间?

正确写法:
inline const Rational operator*(const Rational& lhs,const Rational& rhs)
{
    return Rational(lhs.n*rhs.n, lhs.d*rhs.d); 
}

2.将成员变量声明为private

注意事项:

1.将成员变量声明为private。这可赋予客户访问数据的一致性、可细微划分访问控制、允许约束条件获得保证,并提供clss作者以充分的弹性。(将成员变量隐藏在函数接口的背后,可以为“所有可能的实现”提供弹性;只读访问、读写访问函数;class约束条件获得维护,因为只有成员函数可以影响它们;)

2.protected并不比public更具封装性。

3.其实只有两种访问权限:private(提高封装)和其他(不提供封装)。

3.宁以non-member、non-friend替换member函数

声明成员变量为private能保证只有class的member函数加上friend函数可以访问它们。因此,在一个member和一个non-member,non-friend函数都能提供相同函数功能的情况下,应该优先选用non-member,non-friend函数,因为它并不增加“能够访问class内之private成分”的函数数量,所以较好的维持了class的封装性。

例如,WebBrowser类中已经实现了清理缓存,历史记录以及cookies的操作,可以创建一个non-member,no-friend函数并且位于WebBrowser所在的同一个namespace内,即实现了用户可以扩展自定义的函数。


//WebBrowser.h
namespace  WebBrowserStuff{

class WebBrowser
{
    public:
        WebBrowser();
        ~WebBrowser();
		
		void clearCache();
		void clearHistory();
		void removeCookies();
    private:
        
};

} 
——————————————————————————————————————————————
//WebBrowserClear.h
namespace  WebBrowserStuff{

class WebBrowser;

void clearBrowser(WebBrowser& wb)
{
	wb.clearCache();
	wb.clearHistory();
	wb.removeCookies();
}


} //WebBrowserStuffs

 

内容概要:《2024年印尼税收袖珍指南》由普华永道发布,涵盖了印尼税收体系的关键方面。主要内容包括企业所得税、个人所得税、预提税、国际税收协定、增值税、奢侈品销售税、碳税、关税消费税、税收优惠、地方税、印花税、税务会计、税务稽查评估、强制执行征税、税务纠纷处理等。企业所得税税率一般为22%,特定条件可享受优惠。个人所得税采用超额累进税率,最高达35%。预提税涵盖多种收入类型,如工资、利息、股息等。国际税收协定帮助避免双重征税,提供优惠税率。增值税标准税率为11%,部分商品和服务免征。税收优惠包括免税期、加计扣除等,尤其针对特定行业和地区。地方税种类繁多,如土地建筑物税、机动车税等。税务稽查评估确保纳税人合规,税务纠纷可通过异议、申诉、诉讼等方式解决。 适用人群:企业财务人员、税务顾问、跨国公司税务部门、个人纳税人等。 使用场景及目标:①帮助企业理解和遵守印尼税法,优化税务规划;②协助个人纳税人正确申报各类税项;③为税务顾问提供最新税收政策信息,提升专业服务水平;④为跨国公司处理跨境税务问题提供指导。 阅读建议:此指南内容详尽,建议读者根据自身需求重点阅读相关章节,结合实际案例深入理解各项规定,并关注最新政策动态,确保税务处理合法合规。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值