【问题标题】:Can I assign a function pointer to a function with const parameters in C++?我可以在 C++ 中将函数指针分配给具有 const 参数的函数吗?
【发布时间】:2021-12-18 23:27:12
【问题描述】:

如果我有一个函数int foo(const int A),我可以进行以下编码吗?

int (*Mypointer)(const int);
Mypointer = &foo;

另外,我是否还允许在函数指针的声明中做以下没有const的事情?

int (*Mypointer)(int);
Mypointer = &foo;

另一个有趣的情况是,如果我有 int foo(int A) 并且我声明了这一点

int(*Mypointer)(const int);
Mypointer = &foo;

我遇到了分段错误

【问题讨论】:

  • 你试过了吗?
  • 我理解对 (2) 的怀疑,但为什么 (1) 是非法的?
  • 是的。刚试了一下。我发现(1)和(2)都有效。另一个有趣的情况是,如果我有 int foo(int A) 并且我声明了 ``` int(*Mypointer)(const int);我的指针 = &foo; ``` 我得到了分段错误。我在问题中编辑了这个案例
  • 重要提示:违反“const”应该会给你一个COMPILE错误。 不一定运行时“分段违规”。 Apples and oranges!

标签: c++ pointers function-pointers


【解决方案1】:

它们应该都可以工作。

const 应用于按值传递的参数仅在函数体中有效,使其在那里不可变。

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多