摘要:
重载相同的范围(在同一个类中)函数名相同参数不同virtual关键字可有可无重载与继承、隐藏很好区分,因为重载函数在同一个类中举例说明#include using namespace std;class Base{ public: void f(int x) {cout #include using namespace std;class base{ public: virtual void test(int a, int b) { cout #include using namespace std;class base{ public: ... 阅读全文
摘要:
malloc/free是c++/c的标准库函数,new/delete 是c++的运算符。两者都可以申请动态内存和释放内存。对于非内部数据类型的对象而言,光用malloc/free是无法满足动态对象的要求的。对象在创建时需要自动调用构造函数,在消亡时需要调用析构函数。由于malloc/free是库函数而不是运算符,不在编译器的控制权限之内,不能把自动执行构造函数和析构函数的任务强加给malloc/free。举例说明:#include #include using namespace std;class A{ public: A(void); ~A(void);}... 阅读全文
摘要:
使用free或delete之后,只是把指针所指的内容给释放掉,但是指针并没有被干掉,还是指向原来位置(并不是执行NULL),此时指针指向的内容为垃圾,被称为“野指针”。举例说明几个重要容易迷糊的特征:1. 指针消亡了,并不表示他所指向的内存会被自动释放。例:void func(coid){ char *p = (char *)malloc(sizeof(char) * 100);}当函数执行完时,指针变量因为存在于栈上,会自动消亡。但是这不意味着分配的空间也会自动释放,原因是:动态非配的空间位于堆(动态内存分配区),必须自己去释放;否则,调用一次函数,造成一次内存泄露。2. 内存被释放了,.. 阅读全文