雪傲天1 2023-04-26 15:26 采纳率: 96.2%
浏览 23
已结题

为什么是100呢,它并没有属性啊,只有个构造函数


class T
{
public:
    T(int val)
        {
        }
}
T t1(100);
这里能不能用std::cout输出t1呢
另外t1的值是多少呢,为什么是100呢,它并没有属性啊,只有个构造函数

  • 写回答

3条回答 默认 最新

  • Leodong. 2023-04-26 15:47
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    在C++中,当我们创建一个类的对象时,构造函数会被自动调用。在你的代码中,你定义了一个T类,它只有一个构造函数,该构造函数带有一个int类型的参数,并在函数体内没有做任何事情。因此,当你创建t1对象时,它将调用T类的构造函数,并传递整数值100作为参数。

    即使类中没有显式声明任何属性,由于在C++中对象的内存布局是在编译时确定的,因此对象仍然会占用一些空间,以存储对象的信息。在你的例子中,t1对象的值为100,是因为在构造函数中传递了100。然而,由于T类没有定义任何属性或方法,因此你无法使用std::cout输出t1对象的值或任何其他信息。

    如果你希望能够输出t1的值,你可以向T类中添加一个成员函数,该函数返回构造函数中传递的值,例如:

    class T
    {
    public:
        T(int val)
        {
            value = val;
        }
        int getValue()
        {
            return value;
        }
    private:
        int value;
    };
    
    T t1(100);
    std::cout << t1.getValue() << std::endl; // 输出100
    

    在上面的代码中,我们添加了一个名为getValue()的公共成员函数,它返回构造函数中传递的值。然后,我们可以使用std::cout输出t1对象的值。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月4日
  • 已采纳回答 4月26日
  • 创建了问题 4月26日