在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:



}


const static int i = 5; //在类的源文件中实现


另外在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的时候,不要过分的依赖它,只有最常用的函数才定义成内联函数


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值