首页 > 编程语言 >《C++编程规范》四、函数与操作符

《C++编程规范》四、函数与操作符

时间:2024-09-04 13:47:39浏览次数:13  
标签:const 编程 C++ 传递 参数 引用 操作符 输入 指针

目录


第25条 正确地选择通过值、(智能)指针或者引用传递参数

正确选择参数:分清输入参数、输出参数和输入/输出参数,分清值参数和引用参数。正确地传递参数。

选择如何传递参数时,应该遵循以下准则。

对于只输入(input-only)参数:

  • 始终用const限制所有指向只输入参数的指针和引用;
  • 优先通过值来取得原始类型(如 char、float)和复制开销比较低的值对象(如 Point、complex)的输入;
  • 优先按const的引用取得其他用户定义类型的输入;
  • 如果函数需要其参数的副本,则可以考虑通过值传递代替通过引用传递。这在概念上等同于通过const引用传递加上一次复制,能够帮助编译器更好地优化掉临时变量。

对于输出参数或者输入/输出参数:

  • 如果参数是可选的(这样调用者可以传递null表示“不适用的”或“无需关心的”值),或者函数需要保存这个指针的副本或者操控参数的所有权,那么应该优先通过(智能)指针传递
  • 如果参数是必需的,而且函数无需保存指向参数的指针,或者无需操控其所有权,那么应该优先通过引用传递。这表明参数是必需的,而且调用者必须提供有效对象。
  • 不要使用C语言风格的可变长参数(见第98条)。


标签:const,编程,C++,传递,参数,引用,操作符,输入,指针
From: https://www.cnblogs.com/yubo-guan/p/18396286

相关文章

  • 2024.9.4 leetcode169 多数元素 (C++)
    题面https://leetcode.cn/problems/majority-element/description/ 解答一开始想得比较暴力,直接把对应数字当数组下标,遇到对应数字,数组++,但不知道怎么处理-10^9~10^9的数据大小,后来想了一个办法,那就是先排序,再求连续的个数,个数大于n/2的时候,return结果。太久没接触C++语法、......
  • Linux C++ 多线程高并发服务器实战项目一
    1、项目介绍1、按照包头+包体的格式收发数据包,解决粘包的问题2、非常完整的多线程高并发服务器3、根据收到数据包执行,不同的业务逻辑函数用到的技术:epoll高并发通讯技术,用的是水平触发【LT】水平触发模式通过线程池技术处理业务逻辑多线程、之间同步技术使用,互斥量、和条件变......
  • 10个主流的AI编程工具合集
    AI编程工具在软件开发、算法设计、数据分析等领域发挥着越来越重要的作用。下面是一些主流的AI编程工具合集,以及它们的主要功能、优点和缺点介绍:JupyterNotebook功能:交互式笔记本,支持代码、文本、图表、公式等多种格式,常用于数据科学、机器学习项目。优点:直观易用,适合教学......
  • 【C++】OOP面向对象思想
    面向对象编程(Object-OrientedProgramming,OOP)是一种编程范式,它将现实世界中的实体抽象为对象,通过对象之间的交互来设计软件系统。OOP的核心思想包括以下几个方面:封装(Encapsulation):封装是将数据(属性)和操作这些数据的方法(行为)捆绑在一起的过程。它隐藏了对象的内部状态和复......
  • 中国电子学会Python3级等级考试202403编程题解析1
    1编程题目整数问题给定一个十进制整数n,求出从1到n的所有整数中出现“1”的个数。例如,n=2时,1,2出现1个“1”。n=12时,1,2,3,4,5,6,7,8,9,10,11,12,出现5个“1”。现编写一个程序,实现如下功能:输入整数n,执行程序后,输出该范围内出现“1”的个数。请完善程序。图1要完善的程序......
  • PC电源,USB Type-C通用型双向同步升降压控制器支持5V驱动可编程输出输入电流限制
    概述:PC1045是一款同步升降压控制器,适用于驱动高效电源转换器中的MOSFET或氮化镓(GaN)等功率器件。它支持高达45V的宽输入和输出电压范围,并可在降压、升降压和升压模式之间无缝转换。PC1045集成了具有UVLO保护功能的上管和下管栅极驱动器。它提供可编程电感峰值电流限制和输......
  • 【python编程】demo7:Python快速使用js接口
    原创python学霸在跨语言编程和Web开发中,Python和JavaScript是两种常用的编程语言。有时候,我们可能需要在Python环境中执行JavaScript代码。这就是execjs库发挥作用的地方。一、安装ExecJS在命令行中输入以下命令:pipinstallPyExecJS二、ExecJS的基本使用ExecJS支持多......
  • C++成员变量的new操作不应该放在构造函数中
    C++成员变量的new操作不应该放在构造函数中:理由如下:https://blog.csdn.net/lmb1612977696/article/details/77850378#:~:text=C++%E7%B1%BB%E4%B8%AD%E7%9A%84构造函数中尽量不要有new的操作,new的操作可以定义一个Init()来单独处理,代码如下:1classTest{2public:3......
  • static 数据 编程中的作用
      编程的开发语言有静态强类型语言和动态弱类型语言。静态强类型语言有C/C++,JAVA。静态的开发语言是编译型的开发语言。计算机的编程开发由程序设计师编写代码,源代码文件通过不同语言的编译器编译后会生成不同的机器执行文件。解释性语言为动态弱类型语言,编译型语言是静态强......
  • 编程利器-Visual Studio Code
    前言:在日益繁忙的工作环境中,选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度,甚至让团队协作更加顺畅。那么,哪款编程工具让你的工作效率翻倍?是智能的代码编辑器,强大的版本控制工具,还是那些让你事半功倍的自......