50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
#include <iostream>
|
|
#include <cstring>
|
|
class CTString {
|
|
private:
|
|
char *str;
|
|
static int objectCount; // 静态成员变量,用于记录对象个数
|
|
public:
|
|
CTString() {
|
|
str = NULL; // or str = 0;
|
|
objectCount++; // 增加对象计数
|
|
}
|
|
CTString(const char *s) {
|
|
str = new char[strlen(s) + 1];
|
|
strcpy(str, s);
|
|
objectCount++;
|
|
}
|
|
~CTString() {
|
|
objectCount--; // 先减少对象计数
|
|
delete[] str; // 释放字符串内存
|
|
}
|
|
void Print() {
|
|
if (str)
|
|
std::cout << str << std::endl;
|
|
else
|
|
std::cout << "空字符串" << std::endl;
|
|
}
|
|
void Copy(const char *s) {
|
|
delete[] str;
|
|
str = new char[strlen(s) + 1];
|
|
strcpy(str, s);
|
|
}
|
|
static int getObjectCount() {
|
|
return objectCount;
|
|
}
|
|
};
|
|
int CTString::objectCount = 0; // 静态成员变量初始化
|
|
int main() {
|
|
CTString *pstr;
|
|
pstr = new CTString;
|
|
pstr->Print();
|
|
pstr->Copy("hello");
|
|
pstr->Print();
|
|
std::cout << "总共创建的对象数量: " << CTString::getObjectCount() << std::endl;
|
|
delete pstr;
|
|
// 等待用户按下任意键后再退出
|
|
std::cin.get();
|
|
return 0;
|
|
}
|
|
|