C++的编译模型

C++的编译模型

单遍编译

在单遍编译时,编译器只能根据目前看到的代码做出决策,读到后面的代码也不会影响前面做出的决定。这很影响名字查找和函数重载决议

对于名字查找,C++中的名字包括类型名,函数名,变量名,typedef名,template名。

对于下面这行代码:

Foo<T> a;	//Foo,T,a这三个名字都不是macro

根据之前出现的代码不同,上面这行语句至少有三种可能性。

  1. Foo是个template<typename X> class Foo;Ttype,那么这句话就是以T为模板类型参数具体化了Foo<T>类型,并定义了变量a
  2. Foo是个template<int X> class FooTconst int变量,这句话以T为非类型模板参数具体化了Foo<T>类型,并定义了变量a
  3. Foo、T、a都是int,没啥用的表达式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值