e****d 发帖数: 333 | 1 关于函数参数是const type &的问题。
一般写成这样
void f(const type & para){...}
如果type是指针,应该怎么版呢?是
const type* &p
还是
type* const &p
还是用两个 const 好呢?
就是说,一般是根据情况决定呢?还是有一个规则?
我比较倾向用
type* const &p
这样可以兼容数组,比如:
int A[3]={1,2,3}.
f(A);
请问实际中哪种比较好呢? |
n****g 发帖数: 150 | 2 这种境况感觉最好还是用指针代替 ref,起码读起来要清楚些。
比如 void f(const type * const * const p) 肯定都是const的 |
e****d 发帖数: 333 | 3 是说一般不用指针的ref是吧?就是复制指针就copy,不用ref是吧?
【在 n****g 的大作中提到】 : 这种境况感觉最好还是用指针代替 ref,起码读起来要清楚些。 : 比如 void f(const type * const * const p) 肯定都是const的
|
n******t 发帖数: 4406 | 4
~~~~~~~~~~
这两个东西本来就不是一回事,看你打算干什么了。
要传数组的话只能是type *const &p了。
【在 e****d 的大作中提到】 : 关于函数参数是const type &的问题。 : 一般写成这样 : void f(const type & para){...} : 如果type是指针,应该怎么版呢?是 : const type* &p : 还是 : type* const &p : 还是用两个 const 好呢? : 就是说,一般是根据情况决定呢?还是有一个规则? : 我比较倾向用
|
n****g 发帖数: 150 | 5 个人习惯吧,统一成指针感觉更好分析些,画画箭头就行。当然如果你函数里的操作不
改变指针指向的内容,用copy我觉得就够了;
【在 e****d 的大作中提到】 : 是说一般不用指针的ref是吧?就是复制指针就copy,不用ref是吧?
|
e****d 发帖数: 333 | |
i***h 发帖数: 12655 | 7 type *const &p 怎么解? "关于 指针类型的 常数reference"???
reference 本来不就是const的, 又不能另赋值?
【在 n******t 的大作中提到】 : : ~~~~~~~~~~ : 这两个东西本来就不是一回事,看你打算干什么了。 : 要传数组的话只能是type *const &p了。
|
e****d 发帖数: 333 | 8 reference 不都是常量。
type *const &p 是为了本身是常数的指针。比如数组和临时对象。
【在 i***h 的大作中提到】 : type *const &p 怎么解? "关于 指针类型的 常数reference"??? : reference 本来不就是const的, 又不能另赋值?
|
i***h 发帖数: 12655 | 9 懂了
也就是 (type * const) &p
我先前错误理解为 (type *) (const &p)
【在 e****d 的大作中提到】 : reference 不都是常量。 : type *const &p 是为了本身是常数的指针。比如数组和临时对象。
|
C*******l 发帖数: 105 | |