C++
文章平均质量分 63
AlwenZwei
这个作者很懒,什么都没留下…
展开
-
C语言实现顺序表
typedef int DataType;#define MAX 100typedef struct Seqlist{ DataType data[MAX]; int sz;}Seqlist;//以下都是传址,结构体传址效率高void InitSeqlist(Seqlist* plist); //初始化void PushBack(Seqlist* plist, DataT原创 2017-06-09 16:50:28 · 392 阅读 · 0 评论 -
构造 和 拷贝构造 的优化处理
1.总结C++对传参和传返回值时构造的优化处理。 在同一个表达式中,函数参数和返回值都是传值的方式,会有构造函数和拷贝构造的合并优化问题2.完成下面的题目。 class AA {}; AA f (AA a) { return a ; } Test1中调用了2次AA的拷贝构造函数,1次AA的赋值运算符函数的重载。void Test1原创 2017-07-22 17:42:34 · 331 阅读 · 0 评论 -
单链表类:class Slist
//单链表//内容:默认4个,增删6个,打印,查找#pragma once#include#includeusing namespace std;typedef int DataType; //节点类,struct类默认公有struct SListNode{ //构造函数和成员变量都是公有的 SListNode* _next; DataType _data; //原创 2017-07-22 17:21:18 · 665 阅读 · 0 评论 -
双向链表类:class List
//双向链表//内容:默认4个,增删6个,打印,逆置,查找#pragma once#include#includeusing namespace std;typedef int DataType;struct ListNode{ ListNode* _next; ListNode* _prev; DataType _data; ListNode(DataType x原创 2017-07-22 17:17:28 · 1050 阅读 · 0 评论 -
顺序表类:class SeqList
//顺序表,不是字符串没'\0'//默认4个,增删6个,查找,打印,容量检测#pragma once#include #include using namespace std;typedef int DataType;class SeqList{public:SeqList():_arr(NULL),_capacity(0),_size(0){}~SeqList(){Rel原创 2017-07-22 17:11:26 · 1439 阅读 · 0 评论 -
String类深拷贝的现代写法和传统写法
1.传统写法:老老实实开辟空间并复制内容2.现代写法:借助中间变量,交换指针#includeusing namespace std;//String类传统写法namespace tradition{ class String { public: //构造 String(char* str = "") :_str(new char[strlen(str)原创 2017-07-13 15:25:16 · 527 阅读 · 0 评论 -
String类的增删查改(深拷贝,现代写法)
#include#includeusing namespace std;//String类,深拷贝的增删查改class String{public: String(char* str = "") { _size = strlen(str); _capacity = _size; //不含'\0' _str = new char[_capacity + 1]; s原创 2017-07-13 15:20:10 · 421 阅读 · 0 评论 -
String类引用计数的写时拷贝
写时拷贝:当一个对象被拷贝构造多次,在不改变内容的情况下,多个对象共用同一个空间。如果某个对象要改变内容,就要另外开辟一块相同的空间,然后改变这个对象的_str指针,再进行写操作#include#includeusing namespace std;//String类的浅拷贝增删查改(引用计数的写时拷贝)class String{public: String(c原创 2017-07-13 15:15:44 · 476 阅读 · 0 评论 -
C++动态内存管理
1:总结并剖析malloc/free和new/delete之间关系和差异。 1)他们都是动态内存管理的入口2)malloc要计算空间大小,返回值要强转 new自动计算字节大小,返回值是相应类型的指针3)malloc只开辟空间 new开辟空间+调用构造函数初始化 delete调用析构函数清理+释放空间4)malloc是库函数 new是操作符5)mall原创 2017-07-13 14:57:10 · 289 阅读 · 0 评论 -
C语言实现单链表基础操作--增删查改
typedef int DataType;typedef struct ListNode{ DataType data; ListNode* next;}ListNode;注:1.以下函数都是针对无环单链表2.若可能修改到原链表头结点,都要传二级指针函数如下:ListNode* BuyNode(DataType x); //开辟新节点原创 2017-06-12 21:47:45 · 975 阅读 · 0 评论 -
C语言实现单链表面试题--基础篇
typedef int DataType;typedef struct ListNode{ DataType data; ListNode* next;}ListNode;ListNode* BuyNode(DataType x); //开辟新节点void PushBack(ListNode** list, DataType data); //尾插void PopB原创 2017-06-09 07:45:38 · 596 阅读 · 0 评论 -
C语言实现单链表面试题--进阶(带环问题)
1.判断单链表是否带环?若带环,求环的长度?求环的入口点?2.判断两个链表是否相交,若相交,求交点。(假设链表不带环) 3.判断两个链表是否相交,若相交,求交点。(假设链表可能带环)【升级版】函数如下:int GetCycleLen(ListNode* plist); //求环长度(若无环则返回0)ListNode* IsCycle(ListNode原创 2017-06-12 13:18:11 · 749 阅读 · 0 评论 -
类和对象基础知识
1.类和对象的基础知识定义:类就可以看做是对相似事物的抽象访问限定符:public,private,protect封装性: 1)良好的封装能够减少耦合。 2)类内部的结构可以自由修改。 3)可以对成员进行更精确的控制。 4)隐藏实现细节对象大小计算:只计算非静态成员变量(公有私有都算), 不算函数,和static变量,有内存对齐,空间换时间原创 2017-07-02 01:46:34 · 356 阅读 · 0 评论 -
C++入门基础知识
1.命名空间使用命名空间可以防止重名命名空间可以嵌套使用AA::a调用命名空间里面的变量使用using namespace AA;可以把命名空间的内容展开到全局域,直接调用2.C++基本输入输出流cout,cin,endl都是对象,在std域里cout是标准输出流对象,cin是标准输入流对象cout和cin可以不写变量的类型3.C++支持重载原创 2017-07-01 23:41:21 · 289 阅读 · 0 评论 -
日期类 class_Date
#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;class Date{friend ostream& operator<<(ostream& out, const Date& d);friend istream& operator>>(istream& in, Date& d);public:原创 2017-07-01 21:41:54 · 724 阅读 · 0 评论 -
复数类:class Complex
#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;class Complex{public: //构造函数 Complex(double real = 0.0, double image = 0.0) :_real(real) ,_image(image) { ; } //拷贝构造原创 2017-07-01 19:48:37 · 1686 阅读 · 0 评论 -
菱形继承
1:分析菱形继承的问题。 菱形继承:菱形继承存在的问题:A里面的数据B和C都有,存在二义性和数据冗余解决方法:虚函数关键字:virtual格式: class B: virtual public A {};class C: virtual public A {};2:剖析虚继承是怎么解决二义性和数据冗余的。在虚继承中,A中相同的部分原创 2017-07-22 18:02:58 · 358 阅读 · 0 评论