洗手不上厕所 2021-02-02 23:09 采纳率: 0%
浏览 233

#新手求助 c++创建对象为什么显示未初始化    

代码一

#include<iostream>
using namespace std;
#include<string>
class student
{
public:
    string name;
    long long number;
    void fuzhi(student stu)
    {
        cout << "qingshuruxueshengxingming:" << endl;
        cin >> name;
        cout << "qingshuruxueshengxuehao:" << endl;
        cin>>number;

    }
    void print(student stu)
    {
        cout << stu.name << endl;
        cout << stu.number << endl;
    }
};
int main()
{
    student stu;
    stu.fuzhi(stu);
    stu.print(stu);

    return 0;
}

先创建对象再赋值成功了

代码二

#include<iostream>
using namespace std;
#include<iostream>
class cube
{
public:
    int m_l;
    int m_w;
    int m_h;
    void fuzhi(cube c)
    {
    
        cout << "请分别输入立方体的长、宽、高:" << endl;
        cin >> m_l >> m_w >> m_h;
    }
    int mianji(cube c)
    {
        int s1 = c.m_l * c.m_w * 2;
        int s2 = c.m_l * c.m_h * 2;
        int s3 = c.m_w * c.m_h * 2;
        int sum = s1 + s2 + s3;
        return sum;
    }
    int tiji(cube c)
    {
        int v = c.m_l * c.m_w * c.m_h;
        return v;
    }
};
int main()
{
    cube c;
    c.fuzhi(c);
    /*cout << "立方体面积为:" << c.mianji(c) << endl;
    cout << "立方体体积为:" << c.tiji(c) << endl;*/


    return 0;
}

 

我同样先创建一个对象,然后在调用一个函数来赋值

结果代码二里会为什么显示
错误    C4700    使用了未初始化的局部变量“c”  
 

  • 写回答

2条回答 默认 最新

  • 幻灰龙 2021-02-03 13:44
    关注

    知识点:

    1. C++ 默认不会为局部变量初始化。
    2. 使用没有初始化的局部变量,在C++里属于未定义行为(Undefined behavior, 简称UB

     

    问题:

    1. 局部变量`cube c`并没有初始化。触发了`未初始化的局部变量`这个UB,编译器检测到了这个问题并给出错误报告。
    2. 你的代码含义不明
      1. 首先,cube类的成员函数里可以直接通过隐含的类`this`指针访问cube的成员变量,为什么还要从函数参数里传入cube的变量?
      2. 其次,即使要通过函数参数传入cube的参数,也需要考虑传入引用或者指针?例如考虑 `const cube& c` 作为参数。这是另外的问题。

     

    解决:

    1. 初始化你的局部变量:`cube c = {};` 再使用。
    2. 需要考虑上面的问题2,厘清概念。

     

    评论

报告相同问题?

悬赏问题

  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python