C++ 使用浮点变量初始化

C++ 使用浮点变量初始化,c++,C++,这里有一个简单的类,有一个变量。为什么它不返回变量的值10.5 输出 代码 #包括“iostream” 使用名称空间std; 类Txtbin{ 受保护的: 漂浮区; 公众: Txtbin(); float get_区域(); }; Txtbin::Txtbin(){ 浮动面积=10.5; } float Txtbin::get_area(){ 返回区; } int main(int argc,char*argv[]){ txtbina; cout这是创建一个局部变量,而不是初始化您的成员: Tx

这里有一个简单的类,有一个变量。为什么它不返回变量的值
10.5

输出 代码
#包括“iostream”
使用名称空间std;
类Txtbin{
受保护的:
漂浮区;
公众:
Txtbin();
float get_区域();
};
Txtbin::Txtbin(){
浮动面积=10.5;
}
float Txtbin::get_area(){
返回区;
}
int main(int argc,char*argv[]){
txtbina;

cout这是创建一个局部变量,而不是初始化您的成员:

Txtbin::Txtbin(){
    float area = 10.5; // creates a variable called area that isn't used.
}
您应该像这样初始化您的成员

Txtbin::Txtbin()
: area(10.5)
{
}
或者,如果您使用的是C++11或更新版本,则可能直接在类中:

class Txtbin{
    protected:
        float area = 10.5;

    public:
        Txtbin();
        float get_area();
};

这是创建局部变量,而不是初始化成员:

Txtbin::Txtbin(){
    float area = 10.5; // creates a variable called area that isn't used.
}
您应该像这样初始化您的成员

Txtbin::Txtbin()
: area(10.5)
{
}
或者,如果您使用的是C++11或更新版本,则可能直接在类中:

class Txtbin{
    protected:
        float area = 10.5;

    public:
        Txtbin();
        float get_area();
};

您在此处的新
区域
声明将隐藏该成员

Txtbin::Txtbin(){
    float area = 10.5;
}
如果启用更多/所有警告,编译器可能会告诉您同样的情况

e、 g

相反,请在构造函数中使用成员初始值设定项

class Txtbin{
    protected:
        float area;

    public:
        Txtbin();
        float get_area();
};

Txtbin::Txtbin()
   : area(10.5) {
}

您在此处的新
区域
声明将隐藏该成员

Txtbin::Txtbin(){
    float area = 10.5;
}
如果启用更多/所有警告,编译器可能会告诉您同样的情况

e、 g

相反,请在构造函数中使用成员初始值设定项

class Txtbin{
    protected:
        float area;

    public:
        Txtbin();
        float get_area();
};

Txtbin::Txtbin()
   : area(10.5) {
}

Test!0
。未定义的行为是因为打印了未初始化成员变量的不确定值。这就是为什么编译时会出现警告,并请注意这些警告。
Test!0
。未定义的行为是因为打印了未初始化成员变量的不确定值。这就是为什么编译时会出现警告的原因d注意它们。当我直接初始化变量时,我得到了这个
txtbin.cpp:11:16:警告:非静态数据成员初始值设定项仅适用于-std=c++11或-std=gnu++11 float area=10.5;
@clarkk:没错。我猜您正在使用gcc。默认情况下,它不使用c++11。当我直接初始化变量时,我得到了这个值
txtbin.cpp:11:16:警告:非静态数据成员初始值设定项仅适用于-std=c++11或-std=gnu++11 float area=10.5;
@clarkk:没错。我猜您正在使用gcc。默认情况下,它不使用c++11。