#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++
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;
}