控制台程序不自动退出方法:
- system("pause");
- getchar()
- 使用执行 ctrl+F5,开始调试 F5会出现闪退
动态内存分配
1 //construct c string
2 //class StringBad::StringBad(char *)
3 StringBad::StringBad(char * pchar)
4 {
5 str = new char[std::strlen(pchar) + 1];
6 std:strcpy(str, p);
7 num_string++;
8 }
9 //static class numer should defined out of the class define file
10 //static int num_string;
11 int StringBad::num_string = 0
//destructor
StringBad::~StringBad()
{
num_string--;
delete[] str;
}
复制构造函数
- 如果类中有用new初始化的指针成员,则应该编写显示复制构造函数,以实现深拷贝,防止内存泄漏。
- 类的默认构造函数实现的是浅拷贝,因此有静态成员时也应该编写复制构造函数,在构造函数处理静态成员。
- 复制构造函数,参数一般为类的常量引用,以节约内存和时间
c++编译器会为一个类提供:
- 默认构造函数,如果没有显示的构造函数
- 默认析构函数
- 默认复制函数
- 默认赋值函数
- 默认地址运算符