IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【Effective C++ 条款20-23 笔记】【以传const引用替换传值】【必须返回对象时,别妄想返回其reference】【将成员变量声明为private】 -> 正文阅读

[C++知识库]【Effective C++ 条款20-23 笔记】【以传const引用替换传值】【必须返回对象时,别妄想返回其reference】【将成员变量声明为private】

条款20:以pass-by-reference-to-const替换pass-by-value

意思是:参数传递最好用传const引用代替普通的传值

为什么呢?

  • 传引用可以直接将实参本体传递进函数,而不用调用各种构造函数以及析构函数(完成副本的创建及销毁);注意:效率的提高并不只是减少了一次副本对象的拷贝构造以及析构,副本内可能含有多个同样需要拷贝构造的对象也需要创建并销毁
  • 传const引用可以告诉函数,以只读的形式对待实参
  • 在形参是父类对象,实参是子类对象的时候,传值的方式会直接将实参进行对象切割,构造的副本完全的父类类型,该副本调用的成员方法和、使用的成员变量也完全是父类的

但是,对于内置类型、STL迭代器和函数对象,还是传值好一点

条款21:必须返回对象时,别妄想返回其reference

意思是:不要迷信传引用可以代替普通的传值方式

在条款20中说到:传引用的方式比传值高效。但是有些情况下,传值(比如返回一个新对象)相比于传引用(比如返回一个旧对象的引用)就很有必要

  • 不要返回指向局部对象的指针或引用
  • 不要返回一个建立在堆上的对象的引用(因为有可能无法delete)

条款22:将成员变量声明为private

假设有一个public成员变量和一个protected成员变量,但是最终取消了,那么:

  1. 所有使用该public成员变量的代码(不仅该class内、还包括class外的客户代码)都会被破坏
  2. 所有使用该protected成员变量的代码(不仅该class内、还包括所有使用它的子类代码)都会被破坏

这就导致需要程序员和客户都需要重新写代码,很恐怖

所以,将所有的成员变量声明为private,使用成员函数取控制、访问成员变量

条款23:宁以non-member、non-friend替换member函数

首先注意:能够访问private成员变量的函数只有class的成员函数加上友元函数

如果要在一个成员函数(可以访问private成员变量、也能调用private成员函数)和一个non-member non-friend函数之间做选择,很明显,后者更好地保护了class对内部成员的封装性,使用起来也更安全

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:12:42  更:2021-11-20 18:14:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:39:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码