gpt4 book ai didi

c++ - 为什么我不能将指针的常量引用作为函数参数

转载 作者:行者123 更新时间:2023-12-02 09:54:41 25 4
gpt4 key购买 nike

为什么c++不编译以下内容?

void func(const int *&pp) 
{
//Do stuff
}

int main()
{
int var =23;
int* ptr_to_var = &var;
func(ptr_to_var);
}

为了澄清我想传递一个指针作为对函数的引用,但指针不应在函数中更改,因此 const.

我得到的编译警告是:
error: invalid initialization of reference of type 'const int*&' from expression of type 'int*'

我可以做这样的事情:

void func(int **pp) 
{
//Do stuff
}

但这并没有给我我想要的确切行为,因为现在我实际上可以更改指针指向的位置,即我错过了 const 关键字。

如果你会这样做:

void func(const int **pp) 
{
//Do stuff
}

这也不能编译,我实际上不确定它是否会编译它实际上会做我想要的。

最佳答案

Why does c++ not compile the following?

void func(const int *&pp) 
{
//Do stuff
}

这是格式良好的,任何符合标准的编译器都会编译它。

The compile warning I get is:

error: invalid initialization of reference of type 'const int*&' from expression of type 'int*'

错误消息不是很清楚,但我认为它试图说您尝试使用右值初始化引用。对非常量左值的引用不能绑定(bind)到右值。

If you would then do:

void func(const int **pp) 
{
//Do stuff
}

This doesn't compile either


这也是格式良好的,符合标准的编译器必须接受它。
您可以看到两个示例都成功编译了 here .

关于c++ - 为什么我不能将指针的常量引用作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61232424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com