[quote=引用 12 楼 lm_whales 的回复:] 类的成员变量, const 加不加,表示不同的对象(常量,变量),同时出现,构成命名冲突。
类的成员变量, const 加不加,表示不同的对象(常量,变量),同时出现,构成命名冲突。
1. 友元是个相互作用的关键字,只存在于表明双方关系的场景中(旨在表明谁是谁的什么),单方面不能使用。 2. 不懂。 坐等高人。 3. 默认形参放到实现文件中,不是不好,是没有用的,得到编译时错误。 4. 其实,我个人认为林锐博士的这句话,很容易引起误会。我想他的意思是,用inline的时候,你就不要把声明和实现的分开了,就把实现当成一种分明放到头文件中好了。 否则,只放把inline放到实现中,是没有用的,它可能仅在它所在的编译单元起作用的(当然,这就跟编译器实现很相关了),对于别的cpp文件来说是看见inline的。 [quote=引用 2 楼 Adol1111 的回复:] 1、友元函数表示的是这个函数不是我的成员,但可以使用我的成员数据。换个角度来说,也就是有点特殊的普通函数,普通函数定义分离后脱离了类,那么就是一个普通函数,为什么需要friend。 2、看看lippman的《深度探索C++对象模型》,对C++的对象模型来说,static函数其实是非成员函数的形式,他是在类外的,所以不存在同时指定static和::。对象模型有点复杂,等你学会C++的基础后可以一点点去深入了解。 3、等你做过大型项目你就知道了,对于C/C++来说,管理头文件比管理实现文件更重要。人们更愿意去维护、查看头文件而不是实现文件。所以放在声明里是合理的。你会去别人写的一堆代码里找缺省,还是直接看头文件? 4、inline其实只是编译器的一种优化,而且inline有个问题,当代码比较复杂时,inline会失去作用。所以对用户来说是否是inline的一点也不重要。
1. 友元是个相互作用的关键字,只存在于表明双方关系的场景中(旨在表明谁是谁的什么),单方面不能使用。 2. 不懂。 坐等高人。 3. 默认形参放到实现文件中,不是不好,是没有用的,得到编译时错误。 4. 其实,我个人认为林锐博士的这句话,很容易引起误会。我想他的意思是,用inline的时候,你就不要把声明和实现的分开了,就把实现当成一种分明放到头文件中好了。 否则,只放把inline放到实现中,是没有用的,它可能仅在它所在的编译单元起作用的(当然,这就跟编译器实现很相关了),对于别的cpp文件来说是看见inline的。
//A.h class A{ public: A(int i); private: int i; }; //main.cpp #include "A.h" int main(){ A a;//此时只有A(int i);看不到缺省,编译失败了。 return 0; } A::A(int i=0):i(i){}
1、友元函数表示的是这个函数不是我的成员,但可以使用我的成员数据。换个角度来说,也就是有点特殊的普通函数,普通函数定义分离后脱离了类,那么就是一个普通函数,为什么需要friend。 2、看看lippman的《深度探索C++对象模型》,对C++的对象模型来说,static函数其实是非成员函数的形式,他是在类外的,所以不存在同时指定static和::。对象模型有点复杂,等你学会C++的基础后可以一点点去深入了解。 3、等你做过大型项目你就知道了,对于C/C++来说,管理头文件比管理实现文件更重要。人们更愿意去维护、查看头文件而不是实现文件。所以放在声明里是合理的。你会去别人写的一堆代码里找缺省,还是直接看头文件? 4、inline其实只是编译器的一种优化,而且inline有个问题,当代码比较复杂时,inline会失去作用。所以对用户来说是否是inline的一点也不重要。
Adol1111 高人! 问下阁下作c++多少时间了 ?
64,639
社区成员
250,578
社区内容
加载中
试试用AI创作助手写篇文章吧