/* Human.h */
#include <string>
/*
* 类的大小取决于类的数据成员大小,函数成员和函数成员的局部变量不占空间
*/
class Human
{
private:
char* name; //指针占4个字节
int age; //int占4个字节
bool man; //占一个字节,但这里会按照4个字节填充
public:
Human(const char* initString); //构造函数不占内存
~Human();
void getObjName(); //函数成员不占内存
};
/*Human.cpp*/
#include <iostream>
#include <string>
#include <string.h>
#include "Human.h"
void Human::getObjName()
{
printf("1 this = 0x%x\n", this); //此对象的地址
}
Human::Human(const char* initString)
{
std::cout << "2 call Human()" << std::endl;
name = new char[strlen(initString) + 1];
}
/*析构函数(对象被销毁时被调用,类只有一个析构函数*/
Human::~Human()
{
std::cout << "3 call ~Human()" << std::endl;
}
#include <iostream>
#include "Human.h"