C ++通过const参考语法传递

问题描述

| 我知道大量介绍了按引用传递和按指针传递的主题...可以肯定的是,在我阅读以下内容之前,我已经理解了所有细微差别: http://carlo17.home.xs4all.nl/cpp/const.qualifier.html 读取(以防链接断开)
The prototype for foobar can have any of the following footprints:
void foobar(TYPE);      // Pass by value
void foobar(TYPE&);     // Pass by reference
void foobar(TYPE const&);   // Pass by const reference

Note that I put the const to the right of TYPE because we don\'t know if TYPE (this is not a template parameter,but rather for instance a literal char*) is a pointer or not!
作者的意思是“请注意,我将const放在TYPE的右边,因为我们不知道TYPE ...是否是指针!\” 我在该主题上阅读的所有内容始终如一: 无效foodbar(TYPE const&) 也一样 无效的foobar(const TYPE&) 如果我对作者的理解正确,他/他在说: const int * X vs int * const X其中指针,X本身是const,而X指向的是const? 如果是这样,这是真的吗?     

解决方法

        如果TYPE是
int*
之类的
#define
,则
const
的位置确实很重要。在这种情况下,根据
const
的位置,您将获得
const int*
int* const
。 如果TYPE是typedef或模板参数,则
const
将以两种方式影响整个类型。 在我看来,这更像是另一个反对宏的论点,而不是在声明中需要某种特定的样式。     ,        查看C ++ FAQ Lite(如文章所示),您从右到左阅读了指针声明。因此,如果TYPE是指针,则*的位置确实有所不同。请点击链接以获取完整的故事。     ,        
void foobar(TYPE const&);   // Pass by const reference
如果TYPE是指向ABC类型的指针,则
void foobar(ABC* const&)
与...不同
void foobar(const ABC* &)
我相信这就是作者所要表达的一切。 编辑 如果typedef是指针,这也适用
typedef SomeStruct* pSomeStruct;
void foobar(pSomeStruct* const &); // const reference to a pointer
                                   // to a pointer to SomeStruct
void foobar(const pSomeStruct* &); // reference to a pointer
                                   // to a const pointer to const SomeStruct
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...