【8-17】c++学习笔记01
控制台程序不自动退出方法:
- 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++编译器会为一个类提供:
- 默认构造函数,如果没有显示的构造函数
- 默认析构函数
- 默认复制函数
- 默认赋值函数
- 默认地址运算符