
C++
you are my friend
这个作者很懒,什么都没留下…
展开
-
平衡二叉树(BST)总结及代码实现
每个结点都有一个作为搜索依据的关键码左子树上所有结点值小于根节点的值,右子树上所有结点值大于根结点的值如果对一棵二叉搜索树进行中序遍历,可以按从小到大的顺序将各节点的值排列起来typedef struct BstNode{ KeyType key; BstNode* leftchild; BstNode* parent; BstNode* rightchild;}BstNode,*BSTree;BstNode* Buynode(KeyType kx){ BstNode*s原创 2021-06-24 17:24:05 · 347 阅读 · 0 评论 -
二叉树要点总结及代码实现
二叉树或为空,或是由一个根节点加上两棵分别称为左子树、右子树互补相交的二叉树组成。存储结构:1、顺序存储结构:从上到下,从左到右依次编号(shuzu)原创 2021-06-17 09:32:55 · 276 阅读 · 0 评论 -
C++ auto关键字概念
auto根据表达的数据,自动识别类型;也可以推导函数的返回类型auto y=12.34;//自动将y识别成doubleint (*pfun)(int,int)=add;//名为add,传递参数为两个整型的函数auto x=add;//推导函数的返回类型原创 2021-06-02 16:20:38 · 202 阅读 · 0 评论 -
C++ 赋值兼容性原则
赋值兼容性总定义:在任何需要基类对象的地方都可以用公有派生类对象来代替。(把子给父)原因:从现实中来看,公有意味着“是一个”,学生是一个人,反之不能这样说。具体规则有三部分:using namespace std;class Person{ string id; string name;public: Person(string i, string na) :id(i), name(na){} ~Person(){}};class Student:public Perso原创 2021-04-21 11:12:27 · 1590 阅读 · 0 评论 -
C++ 友元概念、特点总结
友元破环了对象的封装特性,分为外部函数友元、成员函数友元以及类友元。一、外部函数友元若外部函数想访问私有成员,把它设置成友元函数。示例如下:class Int{private: int value;public: Int(int x = 0) :value(x){} ~Int(){} friend void fun(Int &it);};void fun(Int &it){ it.value = 10;}需注意的是,作为外部函数,本来没有this指原创 2021-04-14 17:08:43 · 1058 阅读 · 0 评论 -
C++ 模板总结
一、模板定义能够接受任意类型的参数,是一种与类型无关的一般形式。其过程是在编译主函数时生成新的代码,是模板类型产生新的类型,生成具体类型,而不是用int替换Type分为函数模板与类模板,前者针对参数类型的不同,后者针对数据成员和成员函数类型的不同。作用是减少代码量。二、模板定义函数模板的一般形式:类模板的一般形式:...原创 2021-03-27 08:41:22 · 167 阅读 · 0 评论 -
C++ 移动构造与移动赋值
C++中的重点内容效率低下的原始方法String fun(){ String s("jiao"); return s;}int main(){ String s1=fun(); return 0;}使用原方法,需要通过临时变量构造新的对象,在拷贝构造之后还需要撤销,带来了额外的损耗。使用移动构建,就是把资源移动了,解决拷贝构造代价大问题。String(String&& s)//移动构建{str=s.str;s.str=nullptr;原创 2021-03-13 11:09:24 · 407 阅读 · 0 评论 -
C++ 浅拷贝与深拷贝
一旦类型有申请资源,需重写拷贝构造函数。class String{private: char *str;public: String(const char *s) { if (s != nullptr) { int len = strlen(s) + 1; str = new char[len]; strcpy_s(str, len, s); } else { str = new char[1]; *str = '\0'; } }原创 2021-02-05 10:43:09 · 118 阅读 · 0 评论 -
C++ 把引用作为返回值
class Object{private: int value;public: Object(int x = 0) :value(x){} ~Object(){} int GetValue() const{ return value; } void SetValue(int x){ value = x; } int &Value(){ return value; }//返回的是地址,是value的引用,也就是value本身 const int & Value() c.原创 2021-01-29 10:07:58 · 512 阅读 · 0 评论 -
C++ 引用与指针的区别总结
主要从两个方面谈论:一、从语法的方面谈论引用是别名,没有所谓的空引用;指针需要存放地址。指针++指向下一个变量的地址;引用++指向它所指之物的值。二、从汇编角度谈论引用就是一个指针,并且是一个自身为常性的指针。总的来说,引用的使用更舒服一些,用指针还需要考虑指针是否为空之类。...原创 2021-01-27 11:33:40 · 207 阅读 · 0 评论 -
C++ new与delete
new可以开辟单个对象,也可以开辟一组对象,如下面代码段所示:class Object{private: int value;public: Object(int x=0) :value(x) { cout << "construct object" << this << endl; } ~Object() { cout << "deconstruct object" << this << endl;.原创 2021-01-25 19:41:38 · 159 阅读 · 0 评论 -
C++ 构造函数与析构函数
一、构造函数进入主函数时,已经为对象分配了空间,但没有调用构造函数,空间中这个对象并没有产生。空间分配了不一定有对象,必须要调动构造函数int main(){ CGoods tea("Black tea",12,560); CGoods book("C++",98); CGoods car; CGoods obj();//被认定为函数的声明,不是对象 return 0;}在定义对象时,有括号,必须给出实参; 如果想调动缺省构造函数,必须没有括号。二、析构函数.原创 2021-01-13 15:51:43 · 227 阅读 · 0 评论 -
C++ this指针(函数如何知道处理的是哪个对象的数据)
类要经过三次编译第一次记录其数据成员;第二次记录其声明;第三次改写函数,把this指针加进去。this指向当前类型对象的指针,并且自身是一个常性。总结:this指针是类的成员函数里的一个属性,并不在对象里存在,当这个对象调动它的成员方法时,方法里由个参数是this。当成员方法调动完了,this指针自然而然没有了。成员方法被调动,this才显现;成员方法不调动,不显现。并不是说对象里有this指针,this指针是当前本身对象的地址。每个类的成员函数都将拥有一个this指针,..原创 2021-01-12 09:17:15 · 247 阅读 · 0 评论 -
C++与C语言的区别总结
一、输入输出二、引用(别名)三、内联函数(inline) 在C++中,为了解决一些频繁调用的小函数大量消耗栈空间,引入了内联函数,内联函数的处理方式就是在函数的调用点直接代码展开。 内联函数与普通函数的区别: 内联函数与static函数的区别: 内联函数与宏的区别:inline处理时机在预编译阶段,有安全检查和类型检查。宏的处理在预编译阶段,没有检查机制,只是简单的文本替换。四、函数参数的默认值五、函数的重载 函数的原型...原创 2021-01-07 08:57:32 · 209 阅读 · 0 评论