宏的弊端和有用的地方

【规则】

宏在C语言中极其重要,而在C++里用得就少多了。关于宏得第一规则是:绝不应该去使用它,除非你不得步这样做。

【可以使用带参数的宏】

#define MAC(x,y) argument1:x argument2:y

在使用MAC时必须提供俩个字符串,它们将在MAC()被展开时用于取代x和y,例如,

expanded = MAC(foo bar,yuk yuk) =》》 expanded = argument1:foo bar argument2: yuk yuk.

【宏名字不能重载,宏预处理不能处理递归调用】

#define PRINT(a,b) cout<<(a)<<(b)
#define PRINT(a,b,c) cout<<(a)<<(b)<<(c)//重复定义使第一个宏定义无效
#define FAC(n) (n>1)?n*FAC(n-1):1//递归的宏  错误的调用。

【一些可能有用的宏】

#define CASE break;case
#define FOREVER for(;;)

【更好的办法】

cosnt inline template enum 和 namespace 机制等都是为了用做预处理器结构的许多传统使用方式的替代品。

//C++提供预处理器替代品
const int answer = 42;
template<class T> inline T min(T a, T b) { return (a < b) ? a : b; }

【##宏运算符可以拼接起俩个串,构造出一个新串。】

#define NAME2(a,b) a##b
int NAME2(hack, cah)()
{
	return 1000;
}
//在主函数调用:
int re = hackcah();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多态是面向对象编程中的一个重要概念,它允许使用父类类型的变量来引用子类类型的对象。多态具有以下优势和弊端: 优势: 1. 可扩展性:多态使得程序更加灵活和可扩展。通过定义通用的父类类型,可以在不修改现有代码的情况下添加新的子类类型。 2. 可替换性:多态使得代码更具有可替换性,可以在运行时动态地替换对象的实际类型。这意味着可以通过改变对象的具体实现类来改变程序的行为。 3. 代码复用:多态可以提高代码的复用性。通过将代码与具体的实现类解耦,可以更好地实现模块化和重用。 弊端: 1. 性能损失:多态需要在运行时进行类型检查和动态绑定,可能会导致一定的性能损失。相比于直接调用具体类型的方法,多态的方法调用可能需要更多的时间。 2. 可读性下降:多态的使用可能会导致代码的可读性下降。由于多态的对象类型在编译时无法确定,需要进行一些额外的推理和理解。 3. 隐藏细节:多态可能会隐藏子类的细节,使得代码更加抽象和难以理解。这可能会导致一些潜在的问题被掩盖,增加调试和维护的难度。 总的来说,多态在面向对象编程中具有重要的优势,但也需要在适当的时候进行权衡和使用。合理地利用多态可以提高代码的灵活性和可维护性,但过度使用可能会带来一些性能和可读性的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值