随笔分类 - 编程语言及数据结构
摘要:StaticLinkList中数据元素删除时的效率问题 void destroy(Node* pn) { SNode* space = reinterpret_cast<SNode*>(m_space); SNode* psn = dynamic_cast<SNode*>(pn);//从父类指针,转
阅读全文
摘要:LinkList中遍历操作与删除操作混合使用 删除成功后,list.current()返回什么值? #include <iostream> #include "LinkList.h" using namespace std; using namespace DTLib; int main() { L
阅读全文
摘要:LinkList中的数据元素删除 LinkList<Test> list; Test t0(0), t1(1), t2(2); try { list.insert(t0); list.insert(t1); //在t1析构时抛出异常 list.insert(t2); list.remove(1);
阅读全文
摘要:什么空指针问题呢?首先看一下调用过程:创建一个NullPointerException类的对象(1)调用父类的构造函数Exception,并且以0作为参数;(2)调用到init函数,以3个0作为参数;(3)通过调用strdup函数,将message复制一份出来,然后将复制出来的message赋值给m
阅读全文
摘要:实验一:证明new_handler全局函数是否存在 #include <iostream> #include <new> #include <cstdlib> #include <exception> using namespace std; class Test { int m_value; pu
阅读全文
摘要:动态内存申请一定成功吗?常见的动态内存分配代码 C代码: int* p = (int*)malloc(10 * sizeof(int)); if( p!=NULL ) { //... ... } C++代码: int* p = new int[10]; if( p!=NULL ) { //... .
阅读全文
摘要:问题:如何判断一个函数是否会抛出异常,以及抛出哪些异常?假设在开发的时候,调用一个函数来完成某项任务,这个函数不是你写的或者是第3库中的一个函数,那么问题来了,你如何确定这个函数会不会抛出异常呢?为什么要搞清这个问题,因为我们学习了异常处理,那么我们在调用一个函数的时候,就必须考虑这个函数会不会抛出
阅读全文
摘要:问题:如果在main函数中抛出异常会发生什么? #include <iostream> using namespace std; class Test { public: Test() { cout << "Test()" << endl; } ~Test() { cout << "~Test()"
阅读全文
摘要:new[]/delete[]与new/delete完全不同-动态对象数组创建通过new[] 完成-动态对象数组的销毁通过delete[]完成-new[]/delete[]能够被重载,进而改变内存管理方式 new[]/delete[]的重载方式 //static member function voi
阅读全文
摘要:如果已经掌握在静态存储区上创建对象的方法,那么可以扩展一下,可以在任意地址上创建C++对象。 解决方案:-在类中重载new/delete操作符-在new的操作符重载函数中返回指定的地址-在delete操作符重载中标记对应的地址可用 自定义动态对象的存储空间 第二个实验指定了空间为静态存储区中的空间,
阅读全文
摘要:#include <iostream> #include <string> using namespace std; class Test { private: static const unsigned int COUNT = 4; static char c_buffer[]; //首先定义一个
阅读全文
摘要:new关键字创建出来的对象位于什么地方?很明显嘛,new关键字创建出来的对象一定位于堆空间,这种说法一定正确吗?本篇博客帮你揭开其神秘的面纱。 被忽略的事实new/delete的本质是C++预定义的操作符C++对这两个操作符做了严格的行为定义-new:1.获取足够大的内存空间(默认为堆空间)2.在获
阅读全文
摘要:实例1:适用于非const对象 #include <iostream> #include <string> using namespace std; class Test { private: int m_value; int m_count; public: Test(int value = 0)
阅读全文
摘要:完成DynamicArray类的具体实现 DynamicArray设计要点——类模板 动态确定内部数组空间的大小 实现函数返回数组长度 拷贝构造和赋值操作 DynamicArray类的声明 测试: 代码优化: DynamicArray类中的函数实现存在重复的逻辑,如何进行代码优化? 重复代码逻辑的抽
阅读全文