C++
JustSleep
这个作者很懒,什么都没留下…
展开
-
C++与C字符串相关知识点
1、string与char *比如,string的append函数只能加const char类型的,而push_back函数可以加char类型的,也可以直接用 += 来添加char类型的,如果要同时添加两个char, 比如 char a, char b, 则不能写为 str += a + b, 只能老老实实写成 str = str + a + b;- char* to stringc...原创 2019-08-19 13:54:19 · 189 阅读 · 0 评论 -
C++二叉树非递归统一形式
前序遍历:class Solution {public: vector<int> inorderTraversal(TreeNode* root) { vector<int> res; stack<TreeNode*> s; TreeNode *p = root; while (!s...原创 2019-08-31 13:08:58 · 107 阅读 · 0 评论 -
C++初始化
1、普通函数体进行初始化C++规定,对象的成员变量的初始化动作发生在进入构造函数本体之前。在函数体内的语句都不是初始化而是被赋值。初始化发生的时间更早,发生于这些成员的default构造函数被自动调用之时(比进入构造函数体更早)。但对于里面的内置类型,不保证一定在你所看到的那个赋值动作的时间点之前获得初值。2、最好利用初始化列表和上面的结果相同,但是效率更高较高。上面的版本先调用def...原创 2019-09-26 21:01:46 · 927 阅读 · 0 评论 -
C++资源管理
1、以对象管理资源 获得资源后立刻放进管理对象 管理对象运用析构函数确保资源被释放上面所说的管理对象可以理解为auto_ptr智能指针。由于auto_ptr被销毁时会自动删除它所指之物,所以特别注意别让多个auto_ptr同时指向同一个对象。auto_ptr有一个性质:若通过copy构造函数或copy assignment操作符复制他们,他们就会变成null,而复制...原创 2019-09-27 20:55:56 · 226 阅读 · 0 评论 -
C++接口设计
1、shared_ptr有一个好性质就是,它会自动使用它的“每个指针专属的删除器”。2、以 pass by reference-to-const 替换 pass by value。这样避免的多余的构造函数和析构函数,因为没有多余的新对象被创建,还避免了原来传进来的值被函数调用者所修改。3、切割问题,子类和父类拥有相同的函数,但是当一个普通函数的子类形参传递一个父类对象,那么用这个子类参数调...原创 2019-09-28 20:09:32 · 752 阅读 · 0 评论 -
C++实现细节
1、尽可能延后变量定义式的出现,这样可能会避免构造函数和析构函数。在有循环操作时,把类定义在循环内外的决定因素是:观察类的赋值成本和构造函数加上析构函数的和的代价。一般定义在类内。2、尽量少做转型动作,下面先回顾转型语法:C风格的转型动作:(T)expression //将expression转型为T函数风格转型动作: T(expression)//将expression转型为T...原创 2019-09-29 20:15:51 · 166 阅读 · 0 评论 -
C++继承设计
1、共有继承意味着“is-a”关系(是一种)。2、继承中父类的作用域相当于嵌套在子类中。注意上面的声明,子类中所有名为mf1、mf3、的函数都被父类中mf1、mf3所覆盖,即使函数有不同的参数类型那个也适用,而且无论是不是虚函数也同样适用。我们只在意其名称。3、解决上面的缺省掩盖行为的方法是使用using声明式达成目标。如果我们想要基类的一部分同名函数,那么需要使用到转交函数,像这...原创 2019-10-01 15:40:58 · 257 阅读 · 0 评论 -
C++模板与泛型编程
1、面向对象编程总是以显式接口和运行时多态解决问题。模板及泛型世界不同,在此世界中显式接口和运行时多态仍然存在,但重要性降低,反倒是隐式接口和编译器多态移到前头。运行时多态和编译时多态:前者表示哪一个虚函数该被绑定,后者表示哪一个重载函数该被调用。显式接口由函数的签名式(函数名称、参数类型、返回类型)构成,隐式接口并不基于签名式,而是由有效表达式组成。2、了解typename 的双重意...原创 2019-10-03 09:11:01 · 175 阅读 · 0 评论