![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言/c++
文章平均质量分 77
冰室晨也
这个作者很懒,什么都没留下…
展开
-
判断闰年
#include <stdio.h> int main(){ int year; printf("输入年份: "); scanf_s("%d",&year); if(year%4 == 0) { if( year%100 == 0) { // 这里如果被 400 整数是闰年 ...原创 2018-07-16 12:27:53 · 112 阅读 · 0 评论 -
this指针详解
this指针在建立对象时,系统会为每一个对象分配独立的存储空间,也就是给每个对象中的数据成员都分配有自己独立的存储空间。如果对同一个类定义n个对象,则有n组同样大小的空间以存放对象中的数据成员。但对于成员函数来说,对象中的数据成员。一个函数的代码段在内存中只有一份。也就是说,函数的代码段在内存中只有一份。也就是说,同一个类中的不同对象在调用自己的成员函数时,一个类中的不同对象在调用自己的成员函...原创 2019-08-31 14:19:55 · 282 阅读 · 0 评论 -
C++拷贝构造函数详解
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a = 100;int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 //构造函数 CExample(int b) { a = b;} //一般函数 voi...原创 2019-08-31 14:51:01 · 113 阅读 · 0 评论 -
C++的 static 关键字的作用
1)static 修饰全局变量和局部变量全局变量属于数据,不是放在.data 段,就是在.bss,如果是常量字符串的话,就放在.rodata 段,看看一个普通全局变量和 static 全局变量有什么区别?全局变量 gdata1 是“g”代表 global 符号,在链接阶段其他的obj 文件是可以看到的,这样的符号是要参与链接过程符号解析的;gdata2 是“l”代表一个local 本地符号...原创 2019-08-31 15:25:35 · 106 阅读 · 0 评论 -
封装、继承、多态
封装、继承和多态1、封装封装是面向对象方法的重要原则,就是把对象的属性和服务结合成一个独立的系统单位,并且尽可能隐藏对象的内部细节。结合到c++中,这个独立的系统单位就是类,类需要有高聚合和低耦合性,即内部的属性和服务尽可能的联系紧密,而对外部只提供一些必要的接口。让使用的人不必清除类内部是如何实现的。2、继承继承是面向对象技术能够提高软件开发的重要原因之一。通过继承可以实现“代码...原创 2019-09-03 10:46:02 · 475 阅读 · 0 评论 -
重载、重写(覆盖)和隐藏
1、重载:是指在同一访问区内(同一个类)被声明的具有不同参数列表的同名函数,在函数调用时可以通过参数列表来确定调用的对象,重载不关心函数的返回值类型。即同一类中,同名不同参。参数列表不同主要表现在以下几个方面:(1)参数的个数不同 (2)参数顺序不同 (3)参数类型不同这里需要注意函数返回值类型的不同,并不是重载。但函数声明为const是可以被认定为重载的。const对象只能调用co...原创 2019-09-03 10:52:54 · 293 阅读 · 0 评论 -
虚函数(virtual)
虚函数(virtual)上面提到动态多态主要通过虚函数机制实现,这里介绍以下虚函数。和普通的函数声明方式相同,只要在函数的返回值前加上virtual关键字,该函数就为虚函数,即virtual 函数类型 函数名(形式参数)虚函数的作用:允许通过基类的指针或引用来访问基类和派生类的同名函数。1、虚成员函数#include <iostream>using namespac...原创 2019-09-03 11:01:03 · 4218 阅读 · 0 评论 -
虚函数继承与虚继承
虚函数继承和虚继承是完全不同的两个概念。虚函数继承是解决多态性的,当用基类指针指向派生类对象的时候,基类指针调用虚函数的时候会自动调用派生类的虚函数,这就是多态性,也叫动态编联。虚继承就是为了节约内存,他是多重继承中的特有的概念。适用于菱形继承形式。比如B继承于A、C继承于A、D继承于B和C,显然D会继承两次A(图1)。因此,为了节省空间,可以将B、C对A的继承定义为虚拟继承,而A就成...原创 2019-09-03 11:09:35 · 709 阅读 · 0 评论 -
虚拟内存
虚拟内存是内存管理的一种方式,主要是为了解决“大作业”无法同时装入内存的问题。它将多个物理内存碎片和部分磁盘空间重定向为连续的地址空间,以此让程序认为自己拥有连续的可用内存,当物理内存不足时,操作系统会根据页面置换算法将程序需要的数据交换到内存中。虚拟地址空间:在程序运行时,操作系统(linux系统)会为每个进程分配一个4g的虚拟地址空间,其中0-3g为用户空间,3-4g为内核空间而3-4...原创 2019-09-03 11:39:11 · 221 阅读 · 1 评论 -
STL四种智能指针(又名小智买房记)
STL 一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,auto_ptr 是 C++98 提供的解决方案,C+11 已将其摒弃,并提出了 unique_ptr 作为 auto_ptr 替代方案。虽然 auto_ptr 已被摒弃,但在实际项目中仍可使用,但建议使用较新的 unique_ptr,因为 unique_ptr 比 auto_ptr 更加安全,后文会详细叙述。shared_ptr 和 weak_ptr 则是 C+11 从准标准库 Boo原创 2019-08-31 11:03:28 · 189 阅读 · 0 评论 -
c中已经有了malloc和free,为什么c++中会用new和delete?
要了解这个问题我们先需要了解它们的区别相同点:都会从堆上申请空间,用户需要自己来管理。不同点:1.所属语言new是C++特性,malloc是C的。C++一般使用的new,但也可以使用malloc,而C用malloc、realloc、calloc。2.申请释放方式new和delete,malloc和free配对使用。new的使用比malloc简单,内部已经实现了大小的计算、类型转换...原创 2019-08-22 17:54:39 · 962 阅读 · 0 评论 -
内联函数相关知识总结
内联函数和static的区别1)内联函数没有清栈开销,static有清栈开销;2)inline因为变异阶段代码展开,函数文件可见static 符号属性为l(local)本文件可见内联函数和宏的区别内联函数和普通函数相比可以加快程序的速度,因为不需要中断调用,在编译的时候内联函数可以直接镶嵌在目标代码中。而宏只是一个简单的替换。内联函数要做参数类型检查,这是内联函数和宏...原创 2019-07-23 22:57:32 · 190 阅读 · 0 评论 -
指针与引用的差别?
1)非空差别。在任何情况下都不能使用指向空值的引用。一个引用必须指向某些对象。因此你如果使用一个变量并让它指向一个对象,但是该变量在某些时候可能不指向一个对象,这时你应该把变量声明为指针,因为这样你才可以赋空值给变量,相反,如果变量肯定指向一个对象,例如你的设计不许变量为空,这时你就可以把变量声明为引用,不存在指向空值的引用这个事实,意味者引用的代码执行效率更高。2)合法性区别。在使用引用之前...原创 2019-07-24 22:34:41 · 76 阅读 · 0 评论 -
有关const关键字总结
const修饰指针的情况int b = 500;const int * a = &b //情况1int const *a = &b //情况2int* const a = &b //情况3const int* const a = &b//情况4 1)先看情况1如果const位于*号的左侧,则const就是用来修饰...原创 2019-07-22 22:04:46 · 150 阅读 · 0 评论 -
sizeof的相关知识总结
sizeof常见情况#include<iostream>#include<stdio.h>#include<string.h>using namespace std;stuct{short a1;short a2;short a3;}A;stuct{short a1;long a2;short a3;}B;int main();...原创 2019-07-23 22:28:55 · 485 阅读 · 0 评论 -
栈和堆的大小,申请一个整形数组最大可以达到多少(linux(不同的内核版本)和 windows)
解答这个问题的系统和编译器版本有两种,如下:1)x86 32bit linux-redhat 2.6.32-279.el6.i686 gcc-4.4.62)win7 64bit 32bit-VS2013其它系统的情况,请大家自行进行测试,原理都是相同的。要考虑堆和栈的大小,需要先考虑以下几个问题:1)当前系统进程虚拟地址空间有多大,用户空间和内核空间是怎么划分的2)实际物理内存的大小...原创 2019-07-31 19:16:01 · 1549 阅读 · 1 评论 -
struct 和 class 的区别
A. struct 在 C 语言里面是定义结构体的,在 C++语言用 struct 定义的都是类,因此在 C++中:struct 可以包含方法吗?能!能写访问限定符吗?能!能实现继承多态吗?能!默认继承时,基类用 struct 或者 class 定义,继承方式有区别吗?有!一个是 public 继承,一个是 private 继承。定义模板参数列表时,class 能用来定义模板类型参数,st...原创 2019-07-31 19:28:14 · 91 阅读 · 0 评论 -
简单的可靠udp的实现(RUDP)
可靠的概念在实时通信过程中,不同的需求场景对可靠的需求是不一样的,我们在这里总体归纳为三类定义: 尽力可靠:通信的接收方要求发送方的数据尽量完整到达,但业务本身的数据是可以允许缺失的。例如:音视频数据、幂等性状态数据。 无序可靠:通信的接收方要求发送方的数据必须完整到达,但可以不管到达先后顺序。例如:文件传输、白板书写、图形实时绘制数据、日志型追加数据等。 有序可靠:通信接收...原创 2019-08-25 19:20:37 · 1507 阅读 · 0 评论 -
c++中的四种cast转化
1、const_cast(常量转化)用于将const变量转化为非const。这里需要注意:如果一个变量被定义为const,通过const_cast转化函数转化后,这个值还是不能改变的。这里我们需要记住一句话:const_cast不是为了改变const变量的值而设计的,在函数参数的传递上const_cast的作用才显示出来。void fun(int* n){ cout <&l...原创 2019-09-03 11:46:22 · 238 阅读 · 0 评论