C++老手也要注意的几个"小"问题

转载 2007年09月28日 16:29:00

第一条就是: const原则:在C++中最好趋向与使用const来修饰它前面的那个类型。

如:const int a;和int const b;中,虽然两种具有相同的意义,但是最好利用后面的那种情况,后面的更加可读,因为:int const我们可以很清楚地看到const是修饰int,而前面的那种方法中,我们就不那么轻易知道到底const 的具体涵义。由后面的那种方法我们可以知道const指一个恒定的整形。Int *const b,指的是一个恒定的指针b,这个指针指向一个整型,所以这个指针的内容可以改变,但是它的指针值也就是b的值不能变,相应的int const *b,指的是一个指向恒定整型内容的指针b,也就是说这个b的内容可以变,但是开始的b所指向的地址中的内容不能在程序当中通过b来改变。

volatile对上面的原则也适用。
使用类型T做为类型变量已经作为了模板参数的惯例,用来表示函数或者类所接受的类型参量可以用所有的类型。

在C++的模板的类型参量前,最好尽量使用typename来代替class。
在编译时期,模板被编译两次;
实例化之前:检查模板代码本身,查看语法是否正确;
在实例化期间,检查模板代码,查看是否所有的调用都有效。

当使用函数模板,并且引发模板实例化的时候,编译器需要查看模板定义。
在函数实参的类型的推导中,如果类型出现不匹配现象则会出现编译错误。如果要解决这编译错误则有以下几种方法解决:
对传入的实参进行类型转换成匹配类型后传入。
显示指定模板函数的全特化(不能为偏特化,因为函数不支持偏特化)类型。
例子如下所示:

 

template < typename T >
& max(T  & value1,T  & value2)
{

  
return  value1 > value2 ? value1:value2;
}


调用max(
3 , 4.1 )会出现编译错误,解决的办法:
1 .max(static_cast < double > ( 3 ), 4.1 );
2 .max < double > ( 3 );
3 .将函数的模板参数从一个改为两个。


在模板函数内部不能指定默认的模板参数。
函数不能采用偏特化的方法来实现类型的递归,但是它可以利用函数重载的方法来实现类型的转换。

相对于8而言类能使用偏特化的方法来实现类型的递归,并且它的仿函数也可以使用重载operator()来实现函数重载方法。但是它的一个问题就是在调用仿函数的时候一定要加上它的实例化参数类型,以及调用它的构造函数。

函数调用的时候可以采用由参数的类型来反推函数的模板参数,这是仿函数所不能的。所以我们在编程的过程当中一定要注意这些不同技术之间的优点和不足,看看哪些更适合我们。

在调用非标准函数的时候最好要与调用标准函数区分开来,这样不致于使用程序产生歧义的错误。做法是:在变量或者函数的前面加上全局标识符::。

 

java程序员在面试时要注意的几个问题

原文地址:http://www.itjhwd.com/javacxymszy/ 身为一名Java程序员,在面试的时候常常被问到的,下面我总结一些常常别问到的问题。 ...

PHP Header用于页面跳转要注意的几个问题总结

在PHP中用header("location:test.php")进行跳转要注意以下几点,有助于解决一些新手经常遇到的问题 1、location和“:”号间不能有空格,否则会出错。 2、在用hea...

Metasploit安裝時要注意的幾個問題

Metasploit下載地址(現在的最新版本是4.3):http://www.metasploit.com/download/         安裝環境:Windows XP SP3 無安全...

Java可变参数(...)方法重载时要注意的几个问题

转载地址:http://www.blogjava.net/rongxh7/archive/2010/04/18/318698.html Java可变参数方法重载时要注意的几个问题 ...

为项目增加LOG4J2支持&LOG4J2使用如何增加LOG4J2中的几个必须要注意问题

2015年6月10日 YOL 发表回复 文章目录 [hide] 1 背景 2 正文 2.1 1  检查环境 2.2 2 加入log4j2 ...

ASSERT()和assert() | const,static和volatile要注意的几个问题 |define宏与const区别

ASSERT ()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判...

多尺度模板匹配要注意的几个问题

运用多尺度模板匹配进行物体识别时,需要注意三点: 1. 模板边缘的处理:原始模板选取时,边缘往往会有1-2个多余的像素,这在尺度较小的时候没有多大影响,但是在大尺度匹配的时候容易造成无匹配。例如,假...

关于C51的中断函数要注意的几个问题

关于C51的中断函数要注意的几个问题 作者 guyepiaoyu日期 2006-5-21 16:27:00 转载自:http://blog.21ic.com/user1/531/archive...

Java可变参数方法重载时要注意的几个问题

转载自:http://www.blogjava.net/rongxh7/archive/2010/04/18/318698.html JDK1.5引进了方法的可变参数,受到许多开发人员的青睐。有了这...
  • gwpJava
  • gwpJava
  • 2015年06月19日 09:57
  • 2067

Java与C通信要注意的几个问题

基于Web的测试软件是由C++数据采集服务器程序和客户端Java显示程序两部分构成,前者用C++,后者Java语言,存在数据移植问题。因为在计算机系统中,当包含数字的二进制文件从一个结构移到另一结构时...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++老手也要注意的几个"小"问题
举报原因:
原因补充:

(最多只允许输入30个字)