effective C++阅读笔记 2

条款26:尽可能的延后变量定义式出现的时间

尽可能后的定量定义式不仅能够避免构造非必要对象,还可以避免无意义的缺省构造行为,更深层次的说,以具明显意义之初值将变量初始化,还可以附带说明变量的目的。

条款27:尽量少做转型动作

c++中的四种新式转型:

const_cast<T>(expression)   去除const的属性转化

dynamic_cast<T>(expression)支持运行时识别指针或引用所指向的对象

reinterpret_cast<T>(experssion)操作数的位模式提供较低层次的重新解释

static_cast<T>(experssion)进行强迫隐性转换

 

条款28:避免返回handle指向对象内部成分

即避免返回引用、指针、迭代器指向对象内部。

 

条款29 :为异常安全努力是值得的

 

条款30 透彻了解inlining的里里外外

将大多数inlining限制在小型、被频繁调用的函数身上,这可使日后的挑调试过程和二进制升级更容易,也可使潜在代码的膨胀问题最小化,使程序的速度提升最大化。

 

条款31: 将文件间的编译存在关系降到最低

支持编译最小化的一般构想是 相依于声明式,不要想相依于定义式

 

条款32 确定你的public继承塑模出is-a关系 

public 意味着is-a。 适用于base class身上的每一件事也都是适用于derived class 身上,因为每一个derived class对象也都是一个base class对象。

 

条款33 避免遮掩继承而来的名称

int x;
void f()
{
    double x;
    cin>>x;            //内层的作用域会遮掩外围的作用域的名称
}

class base{
private:
    int  x;
public:
 virtual void f1() = 0;
 virtual void f2();
 virtual void f1(int);
 void f3();
 void f3(double);
};

class Derived: public base{
public:
    virtual void f1();
    void f3();
    void f4();
};

//调用过程中
Derived d;
int x;

d.f1();// 调用Derived 中的f1
d.f1(x);//错误 Derived 遮住了base中的f1
d.f2();// 没问题
d.f3();//没问题
d.f3(x)//错误  遮住了base中f3

解决方法: 使用using 声明达成目标
在Derived中加入声明
    using base::f1;
    using base::f3;
则上述中错误的可以正常访问

总结:为了让被遮蔽的名称重见天日,可以使用using 声明式

 

条款34 区分接口继承和实现继承

接口可以直接认为是声明,而继承就是实现。

 

条款35:考虑virtual以外的选择


// Template Method模式  通过public中的non-virtual函数调用private 的virtual函数
class Game{
public:
    int healthvalue() const
    {
    ...
    int ret = dohealth();
    ...
    return retval;
    }
private:
    virtual int  dohealth() const
    {
    ...
    }   
};

Strategy设计模式可以替换virtual函数。

 

条款36 绝不重新定义继承而来的non-virtual函数

 

条款37 绝不重新定义继承而来的缺省参数值

virtua函数是动态绑定,而缺省参数值确实静态绑定。

 

条款38 通过复合塑模出has-a(有一个)或 根据某物实现出

 

条款39 明智而慎重的使用private继承

 

条款40 明智而慎重的使用多重继承

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值