C++ 语言中的构造函数

Quâ*_*rần 2 c++ constructor

这是代码:

#include<iostream>
using namespace std;

class Rectangle
{
    private : 
       int _width;
       int _height;
    public  :
        Rectangle()
            : _width{},_height{}
            {}
        Rectangle(int initial_w, int initial_h)
            : _width{initial_w}, _height{initial_h}
            {}  
        int get_width(){return _width;}     
};

int main()
{
    Rectangle a;
    Rectangle(2,3);
    cout<<a.get_width()<<endl;
}

Run Code Online (Sandbox Code Playgroud)

我不明白为什么它返回 0,我认为它应该是 2。请帮忙!!!!!!

小智 7

在您的 main 方法中,您创建了一个Rectangle a;调用您的默认构造函数的Rectangle()。然后在下一行中,您使用 来创建一个临时元素Rectangle(2,3);,它调用您的初始化构造函数Rectangle(int initial_w, int initial_h),但它会立即被丢弃,因为您尚未将其分配给变量。最后,输出默认构造的变量 a。

看来你想要实现的是:

int main()
{
    Rectangle a(2, 3);
    cout << a.get_width() << endl;
}
Run Code Online (Sandbox Code Playgroud)