2.2 C++新语言特性

2.2 C++新语言特性

 

2.2.1 template

Nontype template 参数:    bitset<32> flag32;

Default Template parameters:          

template <class T, class container = vector<T> > 
class MyClass;

 

关键字typename:              

template <class T>
class MyClass{typename T::SubType *ptr;   ... };  
//typename用来作为类型之前的标志符号
//Subtype为内部类型定义,如typedef int SubType;

 

成员模板:              

template <class T> 
class MyClass{
	template <class X>
	MyClass(const MyClass<X>& x);
	template <class X> 
	void assign(const MyClass<X>& x){value = x.getValue();}        
};
//注意:tempalte constuctor(使用成员模板的构造函数)不隐藏implicit copy constructor(隐式复制构造函数)。

 

Nested Tempalte Classes(嵌套类):

template <class T> 
class MyClass{
	template <class T2> 
	class NestedClass;
};

 

 

2.2.2 基本type的显示初始化

int t2 = int();             //initialized with zero.

 

2.2.3 异常处理

2.2.4 命名空间

using joauttis::File;比using namespace josuttis;更好,后者会将namespace中的所有名字曝光。

 

2.2.5 bool类型

 

2.2.6 关键字explicit

禁止单参数构造函数被用于隐式类型转换。如explicit Stack(int size); 这使得Stack s = 40;不能通过编译。

 

2.2.7 新的类型强制转换--static_cast, dynamic_cast,const_cast, reinterpret_cast

 

2.2.8 常静态成员的初始化

class Myclass{
static const int num =10;
int elems[num];
...
};

const int MyClass::num;  //必须在cpp文件中定义,此处不初始化。


2.2.9 main()的定义式

int main()

int main(int argc,  char *argv[])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值