码迷,mamicode.com
首页 > 编程语言 > 详细

《高质量程序设计指南C/C++语言》 林锐 韩永泉编著 总结3

时间:2015-08-04 22:54:24      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

第 9 章  类的构造函数、析构函数与赋值函数

1.构造函数初始化表的使用规则:

1)如果类存在继承关系,派生类必须在其初始化表里调用基类的构造函数。

2)类的 const 常量只能在初始化表里被初始化,因为它不能在函数体内用赋值的方式来初始化。

3)类的数据成员的初始化可以采用初始化表或函数体内赋值两种方式,这两种方式的效率不完全相同。

2. 类 String 的构造函数与析构函数

// String 的普通构造函数

 String::String(const char *str)

{

 if(str==NULL)

 {

    m_data = new char[1];

  *m_data = ‘\ 0’;

 } 

 else

 {

    int length = strlen(str);

    m_data = new char[length+1];

  strcpy(m_data, str);

}

}  

// String 的析构函数

 String::~String(void)

{

  delete [] m_data;  

// 由于 m_data 是内部数据类型,也可以写成delete m_data;

 }

3. 类 String 的拷贝构造函数与赋值函数

// 拷贝构造函数

 String::String(const String &other)

 { 

// 允许操作 other 的私有成员m_data

  int length = strlen(other.m_data);  

  m_data = new char[length+1];

 strcpy(m_data, other.m_data);

}

// 赋值函数

 String & String::operate =(const String&other)

 { 

  // (1) 检查自赋值

  if(this == &other)

   return *this;

  

  // (2) 释放原有的内存资源

  delete [] m_data;

  

  // (3)分配新的内存资源,并复制内容

int length =strlen(other.m_data);  

  m_data = new char[length+1];

  strcpy(m_data, other.m_data);

  

  // (4)返回本对象的引用

  return *this;

}

第 10 章  类的继承与组合

1. 继承

规则1.如果类 A 和类 B 毫不相关,不可以为了使 B 的功能更多些而让 B

继承 A 的功能和属性。

规则2.若在逻辑上 B 是 A 的“一种” (a kind of ) ,则允许 B 继承 A 的功能和属性。

2.组合

规则.若在逻辑上 A 是 B 的“一部分” (a part of) ,则不允许 B 从 A 派生,而是要用 A 和其它东西组合出 B。

建议:

建议1.当心那些视觉上不易分辨的操作符发生书写错误。

我们经常会把“==”误写成“=” ,象“||” 、“&&” 、“<=” 、 “>=”这类符号也很容易发生“丢1”失误。然而编译器却不一定能自动指出这类错误。

建议2.变量(指针、数组)被创建之后应当及时把它们初始化,以防止把未被初始化的变量当成右值使用。

建议3.当心变量的初值、缺省值错误,或者精度不够。

建议4.当心数据类型转换发生错误。尽量使用显式的数据类型转换(让人们知道发生了什么事) ,避免让编译器轻悄悄地进行隐式的数据类型转换。

建议5.当心变量发生上溢或下溢,数组的下标越界。

建议6.当心忘记编写错误处理程序,当心错误处理程序本身有误。

建议7.当心文件 I/O 有错误。

建议8.避免编写技巧性很高代码。

建议9.不要设计面面俱到、非常灵活的数据结构。

建议10.如果原有的代码质量比较好,尽量复用它。但是不要修补很差劲的代码,应当重新编写。

建议11.尽量使用标准库函数,不要“发明”已经存在的库函数。

建议12.尽量不要使用与具体硬件或软件环境关系密切的变量。

建议13.把编译器的选择项设置为最严格状态。

版权声明:本文为博主原创文章,未经博主允许不得转载。

《高质量程序设计指南C/C++语言》 林锐 韩永泉编著 总结3

标签:

原文地址:http://blog.csdn.net/weichanjuan3/article/details/47283549

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!