C++编程习惯与编程要点

2023-11-01

假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯。

① Header(头文件)中的防卫式声明

complex.h:

# ifndef  __COMPLEX__
# define __COMPLEX__
class complex
{

}
# endif

防止头文件的内容被多次包含。

② 把数据放在private声明下,提供接口访问数据

# ifndef  __COMPLEX__
# define __COMPLEX__
class complex
{
    public:
        double real() const {
  return re;}
        double imag() const {
  return im;}
    private:
        doubel re,im;
}
# endif

③ 不会改变类属性(数据成员)的成员函数,全部加上const声明

例如上面的成员函数:

double real () `const` {
  return re;}
double imag() `const` {
  return im;}

既然函数不会改变对象,那么就如实说明,编译器能帮你确保函数的const属性,阅读代码的人也明确你的意图。

而且,const对象才可以调用这些函数——const对象不能够调用非const成员函数。

④ 使用构造函数初始值列表

class complex
{
    public:
        complex(double r = 0, double i =0)
            : re(r), im(i)  { }
    private:
        doubel re,im;
}

在初始值列表中,才是初始化。在构造函数体内的,叫做赋值。

⑤如果可以,参数尽量使用reference to const

为complex 类添加一个+=操作符:

class complex
{
    public:
        complex& operator += (const complex &)
}

使用引用避免类对象构造与析构的开销,使用const确保参数不会被改变。内置类型的值传递与引用传递效率没有多大差别,甚至值传递效率会更高。例如,传递char类型时,值传递只需传递一个字节;引用实际上是指针实现,需要四个字节(32位机)的传递开销。但是为了一致,不妨统一使用引用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++编程习惯与编程要点 的相关文章

随机推荐

  • QML树控件TreeView的使用(上)

    在Qt5 5之前是没有树控件的 我们在使用时用的是ListView来构造出一个树 Qt5 5之后的QML开发阶段 有了树控件TreeView 本篇着重记录QML的TreeView的使用 根据MVC分解文件 类 如下 TreeControll
  • Q数的定义

    1 Q数的定义 对于16位的DSP而言 Q数定义共有16种 其简化写法分别是Q15 Q14 Q13到Q0 其数学含义可以 在其标准定义中确定 分别是Q1 15 Q2 14 Q3 13到Q16 0即标准形式为 Qn m 其数学意义是Q数的最大
  • 【抓包分析tcp协议】

    一 七层网络模型与常见协议 二 协议分析工具 1 网络监听 TcpDump WireShark 适用偏底层的协议分析 2 代理Proxy 适用偏高层的协议分析 如http 推荐工具 手工测试charles 全平台 安全测试burpsuite
  • Proxy error: Could not proxy request 解决方法

    问题本质是代理失败 常见原因 1 后端相应的被代理服务器没有开启 2 代理规则写错 前后端部署的域名应一致 3 没有把vue config js中的 before require mock mock server js 注释掉 导致走代理前
  • linux-select函数详解

    写在前面 主要是参考下边的两篇文章 对文章的内容做了一些记录 使用背景 select是实现IO多路复用的一种方式 典型场景是网络多并发服务器 服务器需要和多个客户端保持连接 相关源码可参考参考中的第二篇文章 IO多路复用概念参考第三篇文章
  • ISOWEEK的算法

    算ISOWEEK的时候 通常是以 该日的所属周数 1 该年的1 4所属周数 但也有特殊的情况 case1 可能当年的一月1号到3号是属于前年的 case2 可能前年12月29到31号是属于下一年的 SQL的算法 CREATE FUNCTIO
  • 开源自动扫描工具OpenSCAP介绍

    OpenSCAP 是一个获得 SCAP 认证的免费开源的自动化扫描 基线核查 报告和自动修复工具 目前主要由 Redhat 进行维护 OpenSCAP 由工具和基线库两个部分组成 两者没有紧密的耦合关系 比如使用 http vuls io
  • 服务器ie安全增强关闭还是显示,如何关掉ie浏览器的增强安全配置

    在 Windows Sever 2012 中打开 IE 浏览器时 IE10 会出现 已启用 Internet Explorer 增强的安全配置 的提示信息 在安全性等级中会设置以 高安全性 如果我想要关闭 Internet Explorer
  • Anaconda系统配置、换源、环境隔离、pycharm环境配置一站式教程

    Anaconda配置一站式教程 欢迎访问我的博客sakura 绘梨衣 1 安装conda 这个下载 除了安装路径 无脑确定就行了 下载网址 Free Download Anaconda 选择安装系统直接下载 最好是不要安装在C盘 反对C盘战
  • Python对excel写入数据操作实例代码(只供参考)

    coding utf8 把buffer中的信息 写入到excel中 并按照要求 构造表格样式 导入readCSV模块 用来获取buffer数据 from readCSV import readCSV from readConfig impo
  • httpclient 工具类

    1 类 package com cainiao manage utils import org apache http HttpEntity import org apache http NameValuePair import org a
  • 类加载 器&反射

    一 类加载器 1 1类加载 1 2类加载器 理解 1 2 1类加载器的作用 1 2 2JVM的类加载机制 1 2 3Java中的内置类加载器 1 2 4ClassLoader 中的两个方法 二 反射 2 1反射的概述 理解 2 2获取Cla
  • 初学maven详细总结

    文章转载自 https www cnblogs com tzyy p 4768859 html 初学maven 简单总结一下学习心得 若有不对的地方 欢迎各位大神给我指正 总结分为6个部分 maven概述 maven安装 maven项目结构
  • Unity 动态修改宏定义

    宏定义可以方便的区分出不同情况下使用的代码 比较经典的就是 UNITY EDITOR 这类 if UNITY EDITOR Debug Log 当前是编辑器环境 else Debug Log 当前不是编辑器环境 endif 开发者同样可以自
  • 微调预训练模型huggingface,transformers

    首先加载Yelp Reviews数据集 from datasets import load dataset dataset load dataset yelp review full dataset train 100 如您现在所知 您需要
  • 怎么让Chrome浏览器支持小于12px的文字?

    Chrome浏览器默认字体大小是16px 每个浏览器默认字体大小可能不一样 0 8 10 8 px div font size 10px span display inline block webkit transform scale 0
  • Numpy数组的序列化和反序列化

    在处理图像数据时 有这么一种需求 图像通常是一个矩阵数据 需要将矩阵数据通过base64编码传输 传输完毕之后解码还原得到原来的矩阵数据 import numpy as np import base64 matrix data 1 2 3
  • python程序设计心得体会感想-python实训心得体会

    技术文档 主体内容 可以认为是页面最想表达的内容总和 对于内容详情页来说 主体内容指从标题开始至正文内容结束 翻页区域也被视为主体内容 文章后的评论 分享 推荐等不视为主体内容 首屏 用户点击搜索结果后进入移动页面 不滑动屏幕即看到的所有内
  • HashMap为什么要使用红黑树

    在JDK1 8之后 Java对HashMap做了改进 在链表长度大于8的时候 将后面的数据存到红黑树中 以加快检索速度 红黑树也是一种平衡二叉树 每个节点有一个储存位表示节点的颜色 可以是红色或者黑色 通过对任意一条从根到叶子的路径上各个节
  • C++编程习惯与编程要点

    假设现在我们要实现一个复数类complex 在类的实现过程中探索良好的编程习惯 Header 头文件 中的防卫式声明 complex h ifndef COMPLEX define COMPLEX class complex endif 防