接口的设计
(成员)函数的接口的确定(也即输入输出的确定),意味着一半的工作已经完成了,除非针对复杂的算法实现。
因此,谨慎对待接口的设计,好的设计会为实现带来莫大的裨益。
判断
if (is_unknown(av1) && is_unknown(av2))
return 0.;
if (is_unknown(av1) ^ is_unknown(av2))
// 神奇的异或
// 极简的异或
return 1.;
私有成员函数 ==》让公有成员函数的生活更美好
class A
{
public:
bool operator==(const A& a) const
{ return equal(a); }
bool operator!=(const A& a) const
{ return !equal(a)}
private:
bool equal(const A& ) const
{...}
};
创建变量的备份
有时我们需要在多个位置使用同一个变量的值,当一个变量分身乏术时,我们创建其备份;
判断一个成员函数有没有被调用(让一个函数只执行一次)
让一个类只被实例化一次,为单例设计模式。让一个成员函数只调用一次,
单调
(调表示调用了)。
当然是从逻辑层面,而非编译器的真实调用情况;
class Test
{
public:
Test():_isfooCalled(false){}
private:
void foo();
bool _isfooCalled;
};
布尔变量_isfooCalled
在构造中初始化为false
,然后我们在foo()
的函数体内:
void Test::foo()
{
if(_isfooCalled)
return;
...
_isfooCalled = true;
}
在一个函数体的开始和结尾做一些手脚,可实现一些别致的功能;