将指向const指针的引用从指向非const的指针安置

沃尔克

在阅读了两个类似的问题之后,我仍然没有找到解决潜在问题的方法。我可以轻松解决问题,但我真的很想了解问题。

我们正在谈论C ++。由于提供了输入的库,char *的使用受到了限制。

我有一个工厂F的公共静态成员方法:

static A *create(const char *&s);

当我从另一个B类像这样调用时:

char *s = data;
A a = F::create(s);

由于“无效的参数”,我收到一个错误

当我将变量声明更改为

const char *s = data;

一切都好...

在AFAIK中,您可以为const参数提供非const变量,因为const参数不是必须的保证。这对于引用似乎无效。

Create使用字符,因此指针不能为const。之后,s将立即提供给类似功能。该数组不应该被编辑,因此我想拥有一个const数组。对指针的引用似乎与我想要的完全一样。

我假设一些内部语言规范禁止我使用最初的解决方案,但我真的很想知道为什么!

莫尔布德尼洛

您不能这样做,因为它是不安全的-它会让您更改非const指针,因此它实际上指向const对象。

考虑一下如果允许的话会发生什么:

void foo(const char* & s)
{
    s = "Pops";  // This is valid.
}

int main()
{
    char t[] = "Unicorns";
    char* p = t;
    foo(p);
    p[0] = 'O'; // Oops, modifying a constant object - undefined.
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过memcpy将“指向const的指针”复制到“指向非const的指针”

来自分类Dev

指向const指针(或指向const的指针)

来自分类Dev

C ++指向const指针的const数组的指针

来自分类Dev

指向同时接受const和非const参数的函数的指针

来自分类Dev

指向int的const数组的指针

来自分类Dev

解引用指向const数据类型的指针

来自分类Dev

为什么指向非const成员函数的指针不能指向const成员函数而相反呢?

来自分类Dev

为什么指向非const成员函数的指针不能指向const成员函数而相反呢?

来自分类Dev

确定指向const的指针是否指向const对象?

来自分类Dev

c-将指向const int的指针转换为仅指向int的指针(并对其进行修改)

来自分类Dev

将const结构引用转换为非const指针

来自分类Dev

Swift指向const char参数的指针

来自分类Dev

指向const重载成员函数的指针

来自分类Dev

指向C ++中const int的指针

来自分类Dev

C ++制作指向const对象的指针数组

来自分类Dev

指向const的指针作为函数参数

来自分类Dev

指向包含互斥量的结构的const指针

来自分类Dev

使用const指针指向函数中的类

来自分类Dev

函数调用中指向 const 的指针

来自分类Dev

给定std :: map带有指向非恒定类的键的指针,如何通过指向const的指针访问它?

来自分类Dev

指向引用的指针 getter

来自分类Dev

使用智能指针指向const int的指针

来自分类Dev

了解指向常数的指针指向整数常数的指针(const int * const *变量)

来自分类Dev

为什么允许将常规指针分配给指向const的指针而不是相反?

来自分类Dev

C:指针类型之间的非法转换:指向const unsigned char的指针->指向unsigned char的指针

来自分类Dev

“指向const int的指针”是否与“ const int *”相同

来自分类Dev

C const 指向 const struct 数组的指针作为函数参数

来自分类Dev

将const指针转换为非const

来自分类Dev

如何将指针引用动态大小的指针指向数组?

Related 相关文章

  1. 1

    通过memcpy将“指向const的指针”复制到“指向非const的指针”

  2. 2

    指向const指针(或指向const的指针)

  3. 3

    C ++指向const指针的const数组的指针

  4. 4

    指向同时接受const和非const参数的函数的指针

  5. 5

    指向int的const数组的指针

  6. 6

    解引用指向const数据类型的指针

  7. 7

    为什么指向非const成员函数的指针不能指向const成员函数而相反呢?

  8. 8

    为什么指向非const成员函数的指针不能指向const成员函数而相反呢?

  9. 9

    确定指向const的指针是否指向const对象?

  10. 10

    c-将指向const int的指针转换为仅指向int的指针(并对其进行修改)

  11. 11

    将const结构引用转换为非const指针

  12. 12

    Swift指向const char参数的指针

  13. 13

    指向const重载成员函数的指针

  14. 14

    指向C ++中const int的指针

  15. 15

    C ++制作指向const对象的指针数组

  16. 16

    指向const的指针作为函数参数

  17. 17

    指向包含互斥量的结构的const指针

  18. 18

    使用const指针指向函数中的类

  19. 19

    函数调用中指向 const 的指针

  20. 20

    给定std :: map带有指向非恒定类的键的指针,如何通过指向const的指针访问它?

  21. 21

    指向引用的指针 getter

  22. 22

    使用智能指针指向const int的指针

  23. 23

    了解指向常数的指针指向整数常数的指针(const int * const *变量)

  24. 24

    为什么允许将常规指针分配给指向const的指针而不是相反?

  25. 25

    C:指针类型之间的非法转换:指向const unsigned char的指针->指向unsigned char的指针

  26. 26

    “指向const int的指针”是否与“ const int *”相同

  27. 27

    C const 指向 const struct 数组的指针作为函数参数

  28. 28

    将const指针转换为非const

  29. 29

    如何将指针引用动态大小的指针指向数组?

热门标签

归档