More Effective 35个有效

来源:互联网 发布:阿里巴巴 淘宝 便宜 编辑:程序博客网 时间:2024/06/06 18:28

1,仔细区分pointers和reference
当你知道你需要指向某个东西,而且绝不会改变指向其他东西,或是当你实现一个操作符而其语法无法使用pointer时,你就应该选择reference,任何其他时候请采用Pointers.
2,最好使用c++转型操作符
3,绝对不要以多态的方式处理数组
class BST{}
class BalenceBst : public BST{}
void print(const BST array[],int num)
{
for(int i = 0;i < num;++i)
cout << array[i] << endl;
}
如果将balance传递下去会有问题, array[i]  = array + i*sizeof(数组中的对象) 编译器会当成bst的大小去进行运算当然会出错,同理删除也一样:

void deleteArray(BST array[]){ delete[] array; }

但是delete [] array 会被解析成

for(i = num;i >= 0;--i)
{
array[i].BST::~BST();
}
//这样是个行为错误的循环代码,导致未定义的结果
所以数组和多态千万不要混用
4:非必要不要提供default constructor
5:对定制的类型转换操作保持警觉

两种函数允许编译器执行隐式转换1,单自变量的Constructor

1 class Name{

public:

Name(String& s);//可以把string 转换成string

}

好的做法:

使用explicit,如果没有explicit关键字也有一种做法,示例如下:

template <class T>

class Array{

public:

class Arraysize{

Arratsize(int Ssize):size_(Ssize){}

int size(void){return size;}

}

Array(ArraySize size);

};

Array<int> i(10);//ok

但是以下情况就会显出效果:

Array<int>  a(10);

Array<int> b(10);

for(int i = 0;i < 10;++i)

{

if(a == b[i])//会报错,编译器不会将Int转换成arraysize,再将arraysize转换成array,两次的转换是不可以的.

}

隐式类型转换

class Rational{

operator double() const;// 将rational 转换成double

}

Rational r(1,0.5);

double d = 0.6 * r;//编译器会将r换成double然后执行乘法运算

但是好的做法是提供一个asDouble()函数用来代替隐式类型转换,犹如string提供的c_str()函数,

编写string类的人想必是很有经验的程序员了,他们也是提供一个显示的函数用来转换,巧合吗?不是吧.

所以建议以功能相同的函数来代替.

6,区分increment/decrement操作符的前置(prefix)和后置形式(postfix)

class Uint{

public:

Uint& operator++(){

++i;

return *this;

}

const Uint operrator++(int){

Uint ui = *this;

++(*this);

return ui;

}

private:

int i;

};

注意:后置式操作符的实现应该以前置式操作符的实现为基础,这样就只用维护前置式的实现即可.



阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 会反刍的动物有哪些 小反刍症状图片 反刍的动物有哪些 马是反刍动物吗 羊是反刍动物吗 马是反刍动物么 反利aqq 下载反利网 淘宝反利是真的吗 反利app下载 淘宝反利 反利网是什么 利返利网 淘宝 返利 淘宝怎么返利 淘粉吧返利 购物返利平台 返利怎么做帐 下载返利 返利怎么返利 返利800网 0515返利网 返利怎么用 返利下载 网贷返利 海淘返利网站 淘宝返利机器人 返利优惠券 立返利 返利多 推广返利 淘宝返利网排名 ashford返利 淘返利网 网上购物返利网站 海外购物返利 淘宝购物返利网站 推荐返利 旺街返利 商品返利 淘宝客 返利