在C++中 使用string 定义变量,当用sizeof()测string 变量大小时,测得的结果为28。如下图所示:
#include <iostream>
#include <string>
using namespace std;
class Test
{
private:
int m_a;
float m_b;
char *m_str;
void show() { cout << "m_a = " << m_a << " m_b = " << m_b << " m_str = " << m_str << endl; }
public:
string ss;
void set_A(int a);
void set_B(float b);
void set_Str( char* str);
void show_All();
};
void Test::set_A(int a)
{
m_a = a;
}
void Test::set_B(float b)
{
m_b = b;
}
void Test::set_Str( char *str)
{
m_str = str;
}
void Test::show_All()
{
cout << "I call the show() function" << endl;
show();
}
int main()
{
Test test;
/*test.set_A(123);
test.set_B(1.23);
test.set_Str("qqwreqeq");
test.show_All();*/
cout << "test 所占内存大小" << sizeof(test) << endl;
Test* test1 = new Test();
cout << "test1 所占内存大小" << sizeof(*test1) << endl;
cout << sizeof(test.ss) << endl;
return 0;
}
运性结果如图:
string 定义的变量所占内存空间为28 是因为string 是一个类,这个类所占的空间大小为28。单独测试sizeof(string)可以得到结果。
将string ss 定义到public 中是因为在类外可以通过对象名调用,放在private 中,只能通过成员函数来太用,在此为了方便便这样定义。