麟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 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码