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()来实现函数重载方法。但是它的一个问题就是在调用仿函数的时候一定要加上它的实例化参数类型,以及调用它的构造函数。

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

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

 

小程序开发注意问题

小程序开发注意问题新手开发遇到的一些需要注意的点,加上百度一些,记录一下1.强制要求请求全部为https! 2. 小程序生命周期的函数内部对象要就改成var that=this;防止被替换。 3....
  • cx091
  • cx091
  • 2018年01月02日 15:56
  • 62

学习C++需要注意的问题

#include"A.h"和#include的区别: 前者是指编译器将从当前工作目录上开始查找此文件;后者是指编译器从标准库目录中开始查找此文件 头文件的作用: 加强安全检测;通...
  • sinat_20265495
  • sinat_20265495
  • 2015年11月30日 22:48
  • 379

高手给菜鸟学习Linux的10个建议

随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windows的经验往往有一些茫然的感觉:不知从何处开始学起。这里介绍学习Linux的一些建议。   一、从基础开始:常常有些朋友在Lin...
  • linux_loajie
  • linux_loajie
  • 2012年07月09日 10:26
  • 2882

再烦,也别忘微笑;再急,也要注意语气

转贴自:http://kisshi.com/2010/01/30/good-words/ 1:再烦,也别忘微笑;再急,也要注意语气;再苦,也别忘坚持;再累,也要爱自己。2:低调做人,你会一次比一次 稳...
  • xwjbs
  • xwjbs
  • 2010年02月01日 11:33
  • 624

C++ 多线程注意事项

1.线程中调用对话框控件。 当线程还在调用对话框中的控件时,比如插入数据、删除数据、显示图片等。则会崩溃 2.线程绘制对话框 线程中绘制对话框,第一是会出现上面所说的,第二在低配置的电脑上会出现白...
  • sz76211822
  • sz76211822
  • 2016年09月19日 11:28
  • 492

WEBAPP开发技巧小结(手机网站开发注意事项)

1、要响应式开发web,也就是页面必须自适应屏幕大小,可以采用流体布局,如之前的文章(自适应宽度布局),其他具体的小问题可以采用media query解决(让IE支持CSS3 Media Query实...
  • budinger
  • budinger
  • 2014年03月14日 14:24
  • 899

iOS9问题备忘

iOS9.0升级后,相应的APP作如下修改 1:info.plist中增加: NSAppTransportSecurity类型Dictionary 在NSAppTransportSecurity下添...
  • huwenbo1hao
  • huwenbo1hao
  • 2015年09月22日 11:16
  • 1079

C语言写的控制台关机小程序

用C语言写的一个关机小程序,通过VC6.0调试运行。
  • rl529014
  • rl529014
  • 2016年01月03日 16:36
  • 1257

C++之函数参数按引用传递

C++引用与指针的比较 引用是C++中的概念,初学者容易把引用和指针混淆一起。 一下程序中,n是m的一个引用(reference),m是被引用物(referent)。  int m;  int...
  • liusandian
  • liusandian
  • 2016年08月04日 12:44
  • 201

再烦,也别忘微笑;再急,也要注意语气。。。。。

再烦,也别忘微笑;再急,也要注意语气; 再苦,也别忘坚持;再累,也要爱自己。 低调做人,你会一次比一次稳健;高调做事,你会一次比一次优秀。 ...
  • yiduwunv
  • yiduwunv
  • 2009年12月20日 16:19
  • 158
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++老手也要注意的几个"小"问题
举报原因:
原因补充:

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