本文主要是介绍在c++中尽量使用const,enmu,inline来代替#define,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在c语言中,经常使用#define来定义预编译,但是预编译存在一系列的问题,比如不会写入函数表,并且不是存在语法错误的检测,比如下面的代码
#define max_num 1;
在c++中不提倡这样的做法,会导致编译器在编译的时候有可能找不到错误。
所以在c++中,最常用的做法就是
const static int num = 1;
来定义一个常量,
在类中定义常量的时候,如下
class A
{
public:
A();
~A();
private:
const static int i = 5; //定义了一个int类型的常量。
}
也可以这样的定义
class A
{
public:
A();
~A();
protect:
const static int i ;
private:
}
另外在c语言中使用#define swap(a , b) { int tmp ;tmp = a;a = b;b = tmp;}
在c++中,规范的写法如下:
templete<typename T>
void swap(T& a , T& b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
使用了模板,泛型编程,提高了程序编写的效率。
这样写的优势就是在c++编译器编译前会进行预编译,并且会在编译期进行错误的检测;
所以在c++中提倡使用const static ,enmu ,inline来代替#define,另外,当使用inline的时候,不要过分的依赖它,只有最常用的函数才定义成内联函数
这篇关于在c++中尽量使用const,enmu,inline来代替#define的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!