C++细节

1.关键字inline必须与函数定义体放在一起才能使函数真正内联,仅把inline放在函数声明的前面不起任何作用。inline是一种用于实现的关键字,而不是用于声明的关键字。高质量C++程序设计风格的一个基本原则:声明与定义不能混为一谈,用户没有必要也不应该知道函数是否需要内联。


2.const引用可以初始化不同类型的对象或者初始化为右值(如字面值常量)。同样的初始化对于非const是非法的。即将引用绑定到不同类型时,会发生:

eg: 

      double dval = 3.14;

      const int &ri = dval;

编译器讲这些代码转换为一下形式的编码:

     int temp = dval;

     const int &ri = temp;


3.在类本来的作用域内部,可以使用类模版的非限定名。例如默认构造函数和复制构造函数的声明中,copy是copy<type>的缩写表示。实质上,编译器推断,当我们引用类的名字时,引用的是同一版本。编译器不会为类中的其他模版的模版形参进行这样的推断,因此声明伙伴类的指针时,必须指定类型形参。


4.接受类类型形参(类类型指针或者引用形参)的函数(包括重载符),以及与类本身定义在同一命名空间中的函数(包括重载符),在用类类型对象(类类型指针或者引用形参)作为实参的时候是可见的。

eg:  std::string s;

          getline(std::cin, s);

当编译器看到getline函数的使用getline(std::cin,s)的时候,它在当前作用域、包含调用的作用域以及定义cin的类型和string类型的命名空间中查找匹配的函数。因此它在命名空间std中查找并找到了由string类型定义的getline函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值