最近新发现了C++类成员函数的外部定义中,返回类型的前置和后置写法的区别,
主要在于,后置返回类型会默认处在该类的作用域中
比如,A类中定义了类型B,那么在A类的成员函数中返回类型B的时候,
- 前置需要加上作用域
classA::typeB
才能让编译器知道类型B是定义在A类的作用域当中的, - 而后置返回类型,前面
classA::成员函数
出现过,所以后面不用加上作用域,直接写-> typeB
即可,
具体写法 (类成员函数定义, 返回A类中的类型B) 如下:
classA::typeB classA::func() { } // 前置形式, 返回类型typeB前面要加作用域classA
auto classA::func() -> typeB { } // 后置形式, 返回类型typeB前面的作用域已经默认为classA