【问题标题】:Can a c\c++ function have compound type in definitionc\c++ 函数是否可以在定义中具有复合类型
【发布时间】:2013-09-13 10:31:48
【问题描述】:

你能帮我解决这个问题吗?

我想知道 ac\c++ 函数可以定义的所有类型。例如,以最简单的方式将函数定义为 void、int、double、char、string 等。然后 W 可能定义一个函数String[] 类型也是。请您解释一下可以定义函数的“所有”可能变体是什么。

BR 瓦尔德

【问题讨论】:

  • 选择你的语言:C 没有String 类型。 C++ 可以,但它被称为std::string。而在 C++ 中,您可能不会将其作为 std::string[] 数组传递。

标签: c++ c function types declaration


【解决方案1】:

有无数种可能的函数签名。您可以让函数返回内置类型或您自己定义的类型。

【讨论】:

  • 虽然String[] 似乎表示一个数组,并且这不可能作为返回类型 - 但vector<string> 确实有效。
  • 确实如此,不过你也可以把字符串数组放入结构体或者类的包装器中,这样就可以返回了。
  • 我明白了。因此,如果我们要编写一个程序来识别所有函数的定义并列出它,我们将如何阅读代码,以便我们能够将函数定义与其他任何内容区分开来?例如,检查是否有大括号后接函数名称和括号(在该特定语言中不应是保留字)后接返回类型,返回类型可以是可以为类定义的任何有效名称或原语名称类型。有什么解释吗?
  • @Vard - 当然有可能。毕竟,这就是编译器所做的。如果您需要,所有解析规则都在语言规范中。
【解决方案2】:

是的,C++ 函数的返回类型可以是任何有效的数据类型,无论是内置的还是用户定义的。

【讨论】:

    【解决方案3】:

    你放在函数名前面的定义是要返回的值的类型。因此,void 函数不返回任何值,int 函数必须返回 int 值,user_def_type 函数必须返回 user_def_type 值。函数的完整签名由其返回值类型、名称和参数列表定义,每个参数都使用其类型声明。所以,你有无数种方法来定义函数。

    【讨论】:

    • 技术上,非模板函数的签名不包括返回类型。
    • 对于 C++,类是成员函数签名的一部分。
    猜你喜欢
    • 1970-01-01
    • 2011-01-08
    • 2021-01-10
    • 2010-09-25
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    相关资源
    最近更新 更多