C++ 面向对象编程提高代码的效率性和健壮性
2017-07-17 11:42
183 查看
一、通过引用来传递和返回对象
和其他变量一样,对象既可以通过传值方式,也可以通过引用方式来传递和返回。一般来说,除非迫不得已,都采用引用方式。这是因为通过传值方式来传递和返回对象需要面临对象间的拷贝操作,是数据变大,从而降低效率,浪费内存。(传递一个指向对象的指针与引用方式效果相同)class Test { public: void set(int n) { nNum = n; }; int get() const { return nNum; }; private: int nNum; }; void f(Test &test) { test.set(999); CString s; s.Format(_T("%d"), test.get()); MessageBox(s); }; Test& g() { // 函数返回的是静态对象的引用,不是局部对象的引用 // 否则g返回给调用者的引用将参考到一个已经不存在的对象 static Test test; test.set(-999); return test; }; // 用户调用 Test test1, test2; f(test1); test2 = g(); CString s; s.Format(_T("%d"), test2.get()); MessageBox(s);
二、const类型参数的对象引用
通常对象作为函数参数通过引用传递时,而该函数又无需改变对象数据成员的值而改变对象的状态,此时可将参数表为const,防止对参数的误写。class Test { public: // n只是给成员变量赋值,并不会改变自身的值 void set(const int& n) { nNum = n; }; private: int nNum; };
三、const成员函数
如果成员函数无需直接或间接改变函数所属函数对象的任何数据成员,那么最好将该函数标记为const。const成员函数只能调用const成员函数,因为非const成员函数可能改变对象的数据成员,而const成员函数不能改变对象状态class Test { public: void set(int n) { nNum = n; }; // 因为get函数不改变类数据成员的值,所以可将该函数标位const int get() const { return nNum; }; private: int nNum; };
四、重载成员函数,便于不同类型的参数输入
相关文章推荐
- 在C++中使用Lambda函数提高代码性能
- 算法提高 3000米排名预测 (把别人的C++代码改成C)
- 最大限制地提高代码的可重用性克服传统面向对象编程方法在可重用性方面的不足
- 使用python3的typing模块提高代码健壮性
- C/C++学习之C提高----C程序数组排序、数据类型(大小,别名,封装)、变量、程序的内存四区模型(栈,堆,全局,代码区)
- CodeReview--提高代码健壮性
- 最大限制地提高代码的可重用性,克服传统面向对象编程方法在可重用性方面的不足
- 在C++中使用Lambda函数提高代码性能
- 提高C++代码质量 - [083]不要返回局部变量的引用
- 提高代码健壮性
- C/C++中利用空指针简化代码,提高效率
- const 关键字提高代码健壮性
- 算法提高 递推求值 (C代码只有50分, 附上答案C++代码,看起来比较吃力)
- 如何提高代码的健壮性
- C++ windows多线程 线程描述了进程内代码的执行路径。进程中同时可以有多个线程在执行,为了使他们能够同时运行,操作系统为每个线程轮流分配CPU时间片,为了充分地利用CPU提高软件产品的性能,一
- [C++] 使用const提高函数的健壮性
- [C/C++]_[初级]_[如何编写简单有效代码,提高程序运行效率和性能]
- 如何提高代码的健壮性需求?
- 提高代码健壮性具有自然作用和社会作用
- [代码健壮性] 学会同时关注代码的正面和反面情况,提高系统健壮性