C++
文章平均质量分 77
琼琼的博客
这个作者很懒,什么都没留下…
展开
-
C++中的缺省参数、引用、函数重载
我们学过C语言的都知道,在函数没有指定指定参数列表时,默认可以接受任意多个参数,便有了可变参数列表。在C++中,对于参数列表有了严格的检测,对于没有参数列表的函数,默认为void,不允许接受任何参数。那么缺省参数又是什么呢?下面我们通过一个例子来说明。#include <iostream>using namespace std;void Test(int a = 9){ c...原创 2018-06-15 10:24:18 · 296 阅读 · 0 评论 -
(C++)在类外访问一个类中的私有成员变量
通过公共函数为私有成员赋值#include <iostream> using namespace std; class Test { private: int x, y; public: void setX(int a) { x=a; } ...原创 2018-10-04 16:02:38 · 7557 阅读 · 0 评论 -
类的this指针,构造函数、析构函数、拷贝构造函数(C++)
1.this指针(一)对象存储模型我们都知道一个类中即有成员变量,又有成员函数,那么对象模型的存储方式是怎样的呢? 我们可以先看一下C语言是如何做的?struct Person { char _name[20]; char _gender[3]; int _age; }; void SetPersonInfo(Perso...原创 2018-08-27 22:21:41 · 318 阅读 · 0 评论 -
每日做题之剑指offer(七)
1.二叉树的深度 时间限制:1秒 空间限制:32768K 热度指数:98813题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。解题思路:如果树只有一个根节点,深度为1 如果树只有左子树,那么树的深度为左子树的深度加1 如果树只有右子树,那么树的深度为右子树的深度加1 如果左右子树都...原创 2018-08-16 21:40:28 · 162 阅读 · 0 评论 -
每日做题之剑指offer(八)
1.翻转单词序列时间限制:1秒 空间限制:32768K 热度指数:197013本题知识点: 字符串题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该...原创 2018-08-18 20:48:02 · 221 阅读 · 0 评论 -
每日做题之剑指offer(十)
1.删除链表中重复的结点时间限制:1秒 空间限制:32768K 热度指数:192077本题知识点: 链表题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解题思路:以题目,给的例子来说明,当...原创 2018-08-18 13:51:33 · 173 阅读 · 0 评论 -
每日做题之剑指offer(六)
1.把数组排成最小的数时间限制:1秒 空间限制:32768K 热度指数:150958本题知识点: 数组题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路:我们应该找到一种排序规则,数组根据这个排序规则可以排成一个最小的数字 ...原创 2018-08-15 21:59:40 · 187 阅读 · 0 评论 -
每日做题之剑指offer(二)
1.跳台阶时间限制:1秒 空间限制:32768K 热度指数:274685题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)解题思路:我们先考虑简单的情况。如果只有1阶台阶,只有一种跳法。如果有两阶台阶,有两种跳法:(1)分两次跳,每次跳一跳;(2)一次跳两级 一般情况下,,我们可以把n阶台阶时的...原创 2018-08-11 16:17:37 · 141 阅读 · 0 评论 -
make_heap, pop_heap, push_heap, sort_heap(C++)
std::pop_heap是一个实现快排的库将front(即第一个最大元素)移动到end的前部,同时将剩下的元素重新构造成(堆排序)一个新的heap。时间复杂度是: (2*log(last - first))例如:#include <iostream>#include <vector>#include <algorithm> using...原创 2018-08-14 20:51:35 · 260 阅读 · 0 评论 -
C++中的前置++和后置++的效率问题
测试环境:VS20081. 仅对内置数据类型自加,两者效率一样#include <iostream>using namespace std;int main(){ int a=1,b=2; a++; ++b; return 0;}汇编代码如下: int a=1,b=2;00F4138E mov ...原创 2018-07-27 17:29:57 · 1585 阅读 · 0 评论 -
C语言中为什么不支持函数重载,C++支持
我们得先知道函数重载是什么?函数的重载: 在同一个作用域类,一组函数的函数名相同,参数列表不同(个数不同/类型不同),返回值可同可不同。1.那么问题来了,为什么C语言不支持重载,C++支持重载呢? 我们先来看看,编译的整个过程: .C语言中为什么不能支持函数重载?从上图可知编译器在编译.c文件时,只会给函数进行简单的重命名;具体的方法是给函数名之前加上”_”;所以加入两个函...原创 2018-07-30 10:33:26 · 1077 阅读 · 0 评论 -
C++动态内存管理( 深度解析·new-delete-new[]-delete[] )
C中的动态内存方式 整体代码测试环境:VS 08 1.堆上申请内存空间 (1)malloc申请 内存空间void* malloc(字节数) 说明:这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。 如果开辟成功,则返回一个指向开辟好空间的指针。 如果开辟失败,则返回一个NULL指针,因此mal...原创 2018-07-10 13:16:49 · 245 阅读 · 0 评论 -
多态(C++)
1.多态的概念 同一种东西在不同场景下的多种形态 比如举个例子:见人说人话,见鬼说鬼话2.动态多态的分类 1>静态多态 静态多态是编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型的转换),可推断出要调用哪个函数,如果有对应的函数就调用该函数,否则出现编译错误 2>动态多态 我们先来看一段代码:#define _CRT_SECURE_N...原创 2018-07-09 11:36:44 · 2046 阅读 · 0 评论 -
日期类的实现(C++)
1、构造函数 2、拷贝构造函数 3、常见运算符的重载 4、函数的复用 实现的功能: 1)、在当前基础下加一天,减一天后的日期 2)、在当前基础下加多天,减多天后的日期 3)、当前日期与要计算的日期相差多少天Date.h#define _CRT_SECURE_NO_WARNING 1#pragma once#include <iostream>#include <asse...原创 2018-06-15 16:23:52 · 349 阅读 · 0 评论 -
C++中获取程序运行时间
1.用GetTickCount()函数用法:DWORD Start = GetTickCount();//这里运行你的程序代码DWORD End = GetTickCount();则(End-Start)就是你的程序运行时间, 以毫秒为单位这个函数只精确到55ms,1个tick就是55ms。来一段程序测试一下#include <iostream>#include <win...原创 2018-06-15 11:52:30 · 39139 阅读 · 0 评论 -
C++中的深浅拷贝
浅拷贝:又称值拷贝,将源对象 的值拷贝到目标拷贝对象中去,本质上来说源对象和目标拷贝对象共用一份实体,只是所引用的变量名不同,地址其实还是相同的。举个简单的例子:你的小名叫西西,大名叫沫沫,当别人叫你西西或者沫沫的时候你都会答应,这两个名字虽然不相同,但是都指的是你。假设有一个String类,String s1;String s2(s1);在进行拷贝构造的时候将对象s1里的值全部拷贝到对象s2...转载 2018-10-07 11:26:43 · 345 阅读 · 0 评论