麟925 2022-04-20 21:13 采纳率: 88.9%
浏览 14
已结题

stu1的sizeof到底是多少?


#include<iostream>
using namespace std;
class Student
{
public:
    Student(string name);
    ~Student();
     static int _sum;
private:
    string _name;
};
//类外实现Student类有参构造函数
Student::Student(string name)
{
    this->_name = name;
    _sum++;
}
Student::~Student(){}
int Student::_sum = 0;//类外初始化静态成员变量_sum
int main()
{
    Student stu1("张三");
    Student stu2("李四");
    cout << "人数是:" << stu1._sum << endl;       //通过对象访问静态成员变量
    cout << "人数是:" << stu2._sum << endl;
    cout << "人数是:" << Student::_sum<< endl;    //通过类访问静态成员变量_sum
    cout << "stu1的大小是:" << sizeof(stu1) << endl;
    return 0;
}

书上的结果是28,我运行的是40;
课本是黑马的C++

  • 写回答

1条回答 默认 最新

  • bostonAlen 2022-04-20 21:48
    关注

    static变量是不属于类的。
    因此stu1的大小就是Student的大小,Student的大小就是string的大小,你可以输出sizeof(string),看看你的是不是40,
    32位系统sizeof(string)的值是28
    64位系统sizeof(string)的值是40

    因为string内部是一个char*的指针还有int类型,不同位数的编译器字节数自然不同

    #include<iostream>
    using namespace std;
    class Student
    {
    public:
        Student(string name);
        ~Student();
        static int _sum;
    private:
        string _name;
    };
    //类外实现Student类有参构造函数
    Student::Student(string name)
    {
        this->_name = name;
        _sum++;
    }
    Student::~Student() {}
    int Student::_sum = 0;//类外初始化静态成员变量_sum
    int main()
    {
        Student stu1("张三");
        Student stu2("李四");
        cout << "人数是:" << stu1._sum << endl;       //通过对象访问静态成员变量
        cout << "人数是:" << stu2._sum << endl;
        cout << "人数是:" << Student::_sum << endl;    //通过类访问静态成员变量_sum
        cout << "stu1的大小是:" << sizeof(stu1) << endl;
        cout << "string的大小是:" << sizeof(string) << endl;
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 创建了问题 4月20日

悬赏问题

  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题