我的Effective C++ 读书笔记 (2013年11月27更新)

本文探讨了C++中构造函数、拷贝构造函数、析构函数及赋值运算符的实现细节与最佳实践。重点讲解了在含有动态分配内存的指针变量时如何自定义拷贝构造函数和赋值运算符,以及构造函数初始化列表和虚拟析构函数的使用场景。


关于构造/拷贝构造;/析构/赋值函数

——什么情况下必须自己定义拷贝构造函数和重载赋值运算符?

若对象成员中有指针变量(其会指向动态分配的内存),则要自己声明拷贝构造函数和赋值运算符。

即使确定自己未来不会用到这两个函数,也最好声明出private的函数,空的。以防不小心被误用却还不报错。


——什么情况下使用构造函数的初始化列表?

应该尽量使用构造函数的初始化列表进行成员的初始化。尤其对于const类型成员和引用类型成员,必须用初始化列表。

对于对象成员,使用初始化列表来初始化能提高效率,只通过一次拷贝构造函数。如果在构造函数内部初始化的话,会先调用默认构造函数、然后再调用赋值运算符函数。


——什么情况下析构函数用virtual修饰?

如果一个类有virtual函数,那一定要让其析构函数也是virtual的。

这样,delete指向子类的父类指针时,不仅调用子类的析构函数,还调用父类的析构函数。


——怎么样重载赋值运算符?

hello&  hello::operator=(const  hello& rhs)
{
......
return *this;
}
其参数类型应该是const+引用。其返回值类型应该是引用。函数内部要返回this指针所指。

这样才能满足赋值时赋值传递的使用习惯。


——为什么有必要检查和避免自己赋值给自己? 

因为对于动态分配的对象,有可能你在赋值时是先delete旧的,然后再new一个。这种情况下,如果是自己赋值给自己,就把赋值者也先删掉了,会出现危险的错误。


关于类和函数的设计

——怎么努力让类的接口完整且最小化?

一个class其实就是个type,跟内置类型一样,是给人用的。因此想让人用的舒服、用的放心,就要设计的简洁、通用、够用、并且不多余。比如设计一个数组的类模板,除了必须的构造、析构、拷贝构造、赋值之外,还要有数组下标访问运算符[ ],能得到数组边界begin/end,能取数组元素个数size。


PS:类模板vs模板类:
类模板class template ,是带有不确定数据类型的类。
模板类,是类模板的那些不确定的类型确定以后的类。




内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值