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


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

该回答通过自己思路及引用到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对象的值。


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

不能用cout输出t1,因为t1是个类对象,类对象里并没有重载输出函数
t1是个类对象,不是具体的值类型
构造函数传递了参数,但这个类是个不完整的类,应该有成员变量接收这个val值