Effective C++初学习

本文探讨了将C++视为一个语言联邦的概念,包括C基础、面向对象编程、泛型编程和STL应用。同时,深入讨论了如何使用const、enum和inline来替换传统的#define宏定义,提升代码质量和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

item1:视C++为一个语言联邦

1.C,以C为基础。然而C没有模板(templates)、没有异常(exception)、没有重载(overloading)…
2.面向对象编程
3.Template C++泛型编程
4.STL.
C++高效编程守则视状况而变化,取决使用C++哪部分。

item2:const,enum,inline替换#define

1.宏定义追踪它浪费时间,
采用const double variable=1.63会使用较小量的码。
2.常量char* -based字符串,采用const char * const variables=="Scott Meyers";
然而string对象更合适const std::string variables("Scott Meyers")
3.类的专属常量:
在类中private采用static const int NumTurns = 5;常量声明式,注意并非定义式。
对于定义式则用:const int variables::NumTurns;定义式,但是应该在实现文件而非头文件。
或者采用enum hack枚举类型充当private: enum {NumTurns = 5 }; int scores[NumsTurns];
4.对于形似函数的宏,最好采用inline替换#indefines
可以带来一般函数的所有可预料的行为和类型安全性.
如以a和b的较大值调用f函数

#define CALL_WITH_MAX(a,b) f((a)>(b)?(a):(b))
 CALL_WITH_MAX(++a,b)  a被调用2次

改为:

template<typename T>
inline void callWithMax(const T & a,const T & b)
{
     f(a>b? a:b);
}

综上,单纯变量用const对象或者enums替换#define
对于形似函数的宏,改用inline函数替换#define。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值