gpt4 book ai didi

c++ - 在 c 结构上调用默认构造函数

转载 作者:行者123 更新时间:2023-12-01 15:10:14 25 4
gpt4 key购买 nike

下面的代码编译得很好(除非对 method 的调用没有注释)。

  • 为什么允许“调用”默认构造函数? (应该没有)
  • 为什么成员函数的声明不是错误?

  • .
    extern "C"
    {
    struct S
    {
    int some_int;
    void method(){}
    };
    }

    int main()
    {
    S s();
    // s.method();
    return 0;
    }

    最佳答案

    一、S s();声明一个名为 s 的函数不带参数并返回 S 类型的对象.就像 int f(); .
    二、那个extern "C"在这里不相关。它大致用于用 C 编写并从 C++ 调用的函数。这并不意味着“假装这段代码是 C 代码”。
    三、S 有一个默认的构造函数。编译器生成一个。在这种情况下,它什么也不做,因为没有 S 的成员。需要非平凡的初始化。要使用默认构造函数,您可以编写 S s;S s{}; .
    四、声明成员函数没问题的原因是structclass在 C++ 中可以有成员函数。我知道,这听起来很重复,但重要的是要记住 struct可以有成员函数、静态数据、private , protected , 和 public成员就像 class . struct 之间的唯一区别和 class是默认情况下,类的成员是私有(private)的,而结构的成员是公共(public)的,默认情况下,类的基类是私有(private)继承的,而结构的基类是公开继承的。

    关于c++ - 在 c 结构上调用默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63341322/

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