编程软件系列之C++编程技巧

C++语言是一个面向对象的语言,使用C++编写的代码更加简捷、高效,更具可维护性和可重用性。但是很多人使用了C++语言后却感到C++与C编程没有什么区别。这其实是由于对C++语言的特点和特色理解和使用不够造成的。事实上,没有任何一个程序员使用C语言的编程效率可以超过C++语言的。

一、使用new和delete进行动态内存分配和释放

运算符new和delete是C++新增的运算符,提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new较之使用malloc()有以下的几个优点:

(1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。

(2)自动地返回正确的指针类型,不用进行强制指针类型转换。

(3)可以用new对分配的对象进行初始化。

使用例子:

(1)int p;
     p=new int[10]; //分配一个含有10个整数的整形数组
     delete[] p; //删除这个数组
   (2)int p;
     p=new int (100);//动态分配一个整数并初始化

二、使用inline内连函数替代宏调用

对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏:#define abs(a) ((a)<0?(-a):(a)), 当使用abs(I++)时,这个宏就会出错。

所以在C++中应该使用inline内连函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。

使用内连函数只须把inline关键字放在函数返回类型的前面。例如:

inline int Add(int a,int b);//声明Add()为内连函数

这样编译器在遇到Add()函数时,就不再进行函数调用,而是直接嵌入函数代码以加快程序的执行。

三、使用函数重载

在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C++中,函数名相同而参数不同的两个函数被解释为重载。例如:

void PutHzchar str //在当前位置输出汉字
void PutHzint xint ychar str //在x,y处输出汉字

使用函数重载可以帮助程序员处理更多的复杂问题,避免了使用诸如intabs()、fabs()、dabs()等繁杂的函数名称;同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。

四、使用引用(reference)代替指针进行参数传递

在C语言中,如果一个函数需要修改用作参数的变量值的时候 ,参数应该声明为指针类型。例如:

   void Addint a a++

但是对于复杂的程序,使用指针容易出错,程序也难以读懂。在C++中,对于上述情况 可以使用引用来代替指针,使程序更加清晰易懂。引用就是对变量取的一个别名,对引用进行操作,这就相当于对原有变量进行操作。例如使用引用的函数定义为:

  void Addint a a++ //a为一个整数的引用

这个函数与使用指针的上一个函数的功能是一样的,然而代码却更为简洁和清晰易懂。

时间: 2024-11-03 10:54:55

编程软件系列之C++编程技巧的相关文章

三菱plc编程软件怎么用?

  1. 首先下载三菱PLC的编程软件GX Developer,目前最新版本是8.86.如下图所示.下载完安装,需要序列号,如果你有三菱的PLC可以申请序列号,如果学习用,可以网上搜索. 2.安装完成后,打开软件GX Developer,打开后如下图所示: 3.打开菜单栏中"工程-创建新工程",会弹出"创建新工程"的窗口,可以选择PLC类型.程序类型和设定工程名.本文选择的是FX系列的FX2N,梯形图.点击"确定",就回到主窗口中,开始编写梯形图

用函数式编程技术编写优美的 JavaScript_javascript技巧

级别: 初级 Shantanu Bhattacharya (shantanu@justawordaway.com), 首席顾问, Siemens Information Systems Limited 2006 年 7 月 20 日 函数式或声明性编程是非常强大的编程方法,正逐渐在软件行业流行起来.这篇文章将介绍一些相关的函数式编程概念,并提供有效使用这些概念的示例.作者将解释如何使用 JavaScript(TM)(JavaScript 能导入函数式编程的构造和特性)编写优美的代码. 简介 函数

针对存储和网络应用 Mellanox推出全新BlueField系列SoC可编程芯片

2016年6月6日, 加州讯,世界领先的高性能计算.数据中心端到端互连方案提供商Mellanox(纳斯达克交易所代码: MLNX)今天宣布,正式推出针对网络及存储应用的BlueField 系列SoC可编程芯片.该系列产品能够满足业界日益增长的高端集成SoC(系统级芯片)需求,简化系统设计,并大幅降低系统整体成本和能耗.BlueField采用基于Tilera一致性网络互连技术(来自于近期收购的EZchip公司)的ARMv8 64位高性能处理器作为内核,支持Mellanox ConnectX 网络卸

win7下c语言编程软件有哪些

  win7下c语言编程软件有哪些.好多刚开始接触c语言的朋友都想知道用上面软件开发c语言比较好,一般来说微软的东西肯定是最好的,更适合新手学习,等上手了就可以接触别的软件了.这里脚本之家小编就为大家分享一下c语言编程软件有哪些? Microsoft Visual C++ .Microsoft Visual Studio. DEV C++.Code::Blocks.Borland C++.WaTCom C++.Borland C++ Builder.GNU DJGPP C++.Lccwin32

fx- FX2N系列PLC通过编程口如何与上位机实现串口通信

问题描述 FX2N系列PLC通过编程口如何与上位机实现串口通信 新人,最近在写一个MFC的控制台,实现与PLC串口通信,以前写的是实现与avr单片机的通信.我按照三菱特有的通信格式编写,不知为啥一直无法实现,哪位前辈有这方面的经验吗?诚心求指点. 比如: 1.上位机发请求讯号(05H)给PLC,上位机只要负责把它发到串口缓冲区就可以吗? 2.在上位机收到PLC返回的确认信号(ACK)后,发后面的多字符帧命令码(02 45 31 30 34 30 30 34 30 32 37 42 30 30 0

Windows 核心编程研究系列之一(-改变进程PTE属性-)[已补完]

  Windows 核心编程研究系列之一 -改 变 进 程 PTE 属性-              这是我研究windows 核心编程的第一篇正式文章,之所以叫核心编程而不叫内核编程,是我觉得从字面上来看核心(core)比内核(kernel)更靠近windows中心,当然只是偶本人的看法的拉.          我们知道在 win NT 中,系统把每个进程的虚拟4G空间分为两大部份,低2G归用户所有,高2G归系统所有.用户不得访问系统的空间,连读都不行,更别说写了!低2G的用户空间也并不是都能

中国人不能写一个真正的中文编程软件吗?

问题描述 汉语更适合编程,同样的命令用中文就可以减小程序体积,以if(textBox1.Text=="123"&&textBox2.Text=="456")MessageBox.Show("登陆成功");为例是80多个字节,而用中文就可以写如果编辑框1.内容=="123"并且编辑框2.内容=="456"消息框.内容("登陆成功")不到80,要比易语言要小的多了!比C#更适

提到软件开发者的社会化编程以及代码托管

提到软件开发者的社会化编程以及代码托管,很多人往往第一时间想到GitHub或者GitCafe.这年头,不去GitHub或者GitCafe上托管几行代码,都不好意思说是自己是程序员.GitHub和GitCafe是以代码托管为基础的社区,用户可以在上面托管代码,团队成员可以协作修改代码.但是项目开发往往比较复杂,涉及到管理,演示,测试等等,仅仅托管代码就能很顺畅地完成开发么?我觉得显然还应该有更好的解决方案. 基于这样的想法,Coding 开发了一个面向开发者的云端开发协作平台,目前可以实现托管代码

像没有编程软件的情况下,编写了一个脚本,除了直接打开属性转换格式之外,还有什么方法?

问题描述 像没有编程软件的情况下,编写了一个脚本,除了直接打开属性转换格式之外,还有什么方法? 上次在学校的多媒体上编了一个脚本,因为没有编程软件,就想到打开属性转换格式,可总觉得这方法有点不怎么好,是不是还有其他方法? 解决方案 你可以试着用Python语言 简单,效率高