【问题标题】:What does `::*` (colon colon star) means in C++? [duplicate]`::*`(冒号星号)在 C++ 中是什么意思? [复制]
【发布时间】:2018-11-21 21:43:41
【问题描述】:

朋友在看this hpp file的时候有一段代码看不懂。具体来说,

  • 诸如A(B, C)int(int, int) 或在这种情况下T(Type::*) 之类的特定格式是什么意思?我已经见过 std::function<int(int, int)> 这样的用法,但仍然不知道 int(int, int) 一个人的含义。
  • Type::* 是什么意思?星号怎么能直接跟在::后面?

【问题讨论】:

  • Type 是命名空间吗?
  • "但仍然不知道 int(int, int) 单独是什么意思" -- int(int, int)int f(int, int) 的类型。你应该弄清楚这个声明的含义(f 是一个接受两个int 参数并返回一个int 的函数。
  • @Dominique 我想它更有可能是一个类型名称。
  • @axiac 所以你的意思是int(int, int)实际上是一种函数?我从来没想过,因为我见过类似int (*func)(int, int) 的东西,即函数指针类型非常多,但函数类型本身却没有。

标签: c++


【解决方案1】:

::* 用于声明指向类成员的指针。所以在这种情况下,它指向一个名为 Type 的模板类型的成员。

std::function<int(int, int)> 是一个 std::function,用于保存一个方法,该方法接受 (int, int) 的参数,并返回一个整数结果。 (这是著名的复杂 C/C++ 类型声明语法的示例)。

【讨论】:

    猜你喜欢
    • 2010-09-28
    • 2011-01-17
    • 2016-12-23
    • 2019-09-14
    • 2011-03-12
    • 2016-12-11
    • 2016-12-15
    • 2012-10-09
    相关资源
    最近更新 更多