自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 笔试题总结

1、引用和指针的区别:相同点:都是地址的概念指针指向一块内存,它的内容是所指内存的地址,引用是地址的别名不同点:(1)指针是一个实体,而引用只是一个别名(2)引用在初始化时被定义一次,之后不可变,指针可变(3)引用没有const,而指针由const,const的指针不可变(4)引用不能为空,而指针可以为空2、C++为什么要用模板类?(1)可以用来创建

2017-09-23 13:47:55 495

原创 C++关键字static

static简介:static方法就是没有this的方法,在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用。面向过程设计中的static1.修饰静态全局变量时特点:a.该变量在全局数据区分配内存b.未经初始化的静态全局变量默认值为0c.static修饰的变量整个文件中都是可见的和全局变

2017-09-19 09:42:30 554

转载 C++常对象,常变量,长成员函数详解(转)

用const修饰的声明数据成员称为常数据成员用const修饰的声明成员函数称为常成员函数用const修饰的定义对象称为常对象变量或对象被const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始化。(一)用const修饰的声明数据成员称为常数据成员    有两种声明形式:const int  cctwl;int const  cctwl;不能省略

2017-09-16 09:01:22 1075

原创 重载运算符

重载运算符的规则如下:1:C++不允许用户自定义新的运算符,只能对已有的C++运算符进行重载2:C++不能重载的运算符有5个“?:”、“.”、“::”、“sizeof”和”.*”(成员指针访问运算符)3:重载不能改变运算符对象的个数4:重载不能改变运算符的优先级和结合性5:重载的运算符函数不能有默认的参数6:重载的运算符必须和用户定义的自定义的对象一起使用,至少有一个是类对

2017-09-15 21:24:02 401

原创 C++类和对象知识点整理七----虚基类和虚继承

25、C++虚继承和虚基类多继承(Multiple Lnheritance)是指从多个直接基类中产生派生类的能力。多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。如:菱形继承解决方法 :为了消除歧义,我们可以在成员变量前面指明它具体来自哪一个类。b.为了解决多继承时的

2017-09-12 17:15:58 414

原创 多继承代码解析

#includeusing namespace std;/*多继承的优缺点实际生活中,一些事物往往会拥有两个或两个以上事物的属性,为了解决这个问题,C++引入了多重继承的概念。多重继承的优点是对象可以调用多个基类中的接口。多重继承的缺点是容易出现继承向上的二义性*/class A{public:A(int a):m_a(a){            

2017-09-12 15:32:36 377

原创 C++类和对象知识点整理六-----多继承

24、C++类的多继承派生类都只有一个基类,称为单继承。除此之外,C++也支持多继承,即一个派生类可以有2个或者多个基类。b.多继承的缺点多继承容易让代码逻辑复杂,思路混乱,一直备受争议,中小型项目中较少使用,后来的Java,c#,PHP等干脆取消了多继承c.多继承的语法也很简单,将多个基类用逗号隔开即可,列如以声明了类A,类B,类C,那么可以这样来声明派生类D:

2017-09-12 14:52:58 299

原创 机器学习是什么?

机器学习(ML)是一门多领域交叉学科,涉及概率论,统计学,逼近论,凸分析,算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍人工智能的各个领域,他是主要使用归纳,综合而不是演绎。发展史:机器学习是人工智能研究较为

2017-09-12 10:49:08 1469

原创 C++类和对象知识点整理五----派生类的构造函数和析构函数

22、C++派生类中的构造函数a.基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成为普通的成员函数。b.在设计派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数来完成,但是大部分基类都

2017-09-10 20:39:14 425

原创 C++类和对象知识点整理四---继承

21、C++继承的概念及语法a.继承是类与类之间的关系,是一个很简单的直观概念,与现实世界中的继承类似。继承(lnheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。被继承的类称为父类或者是基类。继承的类称为子类或者是派生类,派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。b.以下是2种典型的使用继承的场景(1)当你创建的新

2017-09-06 15:53:23 309

原创 C++面向对象面试题知识点整理

面向对象a.编程是在计算机中反映世界面向系统设计带来的种种便利(1)良好的可复用性(2)易维护(3)良好的可扩充性b.以下选项中哪一个不是面向对象设计?(1)面向对象设计的三原则:继承,封装,多态(2)里氏代换原则是继承复用的基石(3)开闭原则是面向对象设计的重要特性之一,软件对扩展应该是开放的,对修改应该是关闭的。(4)防御性编程知识一种编程技巧,

2017-09-05 09:55:23 3012

原创 引用概念

20、引用我们知道,参数的传递本质是一次赋值的过程,赋值就是对内存进行拷贝,所谓的内存拷贝,是指将一块内存上的数据复制到另一块内存上。b.c/C++禁止在函数调用时直接传递数组的内容,而是强制传递数组指针,而对于结构体和对象没有这种限制,调用函数时既可以传递指针,也可以直接传递内容;但是在C++中,我们有了一种比指针更加便捷的传递聚合类型数据的方式,那就是引用(Reference)

2017-09-03 08:44:00 1359

原创 友元函数和友元类

18、友元函数和友元类一个类中可以有public,protected,private三种属性的成员,通过对象可以访问public成员。只有本类中的函数可以访问本类的private成员,现在,将来介绍另外一种情况-----有元(friend)借助有元可以使得其他类中的成员函数以及全局范围内的函数访问当前类的private成员。b.有元函数在当前类以外定义的,不属于当前类的

2017-08-31 17:32:26 371

原创 this指针详解

17、this指针详解a.this 指针是C++中的一个关键字,也是一个const指针,它指向当前对象,通过它可以访问当前对象的所有成员。void Student :: setNam(char*name){this ->name = name; }this虽然用在类的内部,但是只有在对象被创建以后才会给this赋值,并且这个赋值的过程是编译器自动完成的,不需要用

2017-08-29 12:00:43 415

原创 new和delete详解

16、new和delete详解a.new和delete运算符是用于动态分配和撤销内存的运算符。对于计算机程序设计而言,变量和对象在内存中的分配都是编译器在编译程序时安排好的,这带来极大的不便,如数组必须大开小用,指针必须指向一个已经存在的变量和对象。对于不能确定需要占用多少内存的情况,动态内存是首要方法b.new用法1.开辟单变量地址空间(使用new运算符必须已知数据类

2017-08-29 09:21:50 1023

原创 C++类和对象知识点整理三

10、构造函数和析构函数(重点)a.在C++中,有一种特殊的成员函数,他的名字和类名相同,没有返回值,不需要用户显式调用,用户也不能调用,而是在创建对象时自动执行,这种特殊的成员函数就是构造函数(Constructor)b.构造函数必须是public属性的,否则创建对象时无法调用,当然,设置为private,protected也不会报错,但是没有意义c.构造函数没有返回

2017-08-29 08:43:55 377

原创 C++类和对象知识点整理二

7、类的成员变量和成员函数类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存,但是,在定义类的时候不能对成员变量赋值,因为类只是一种数据类型或者说是一种模板,本身不占用内存空间,而变量的值则需要内存来存储b.类的成员函数作用范围由类来决定在类内直接定义函数时,不需要在函数名前加上类名,但当成员函数定义在类外时,就必须在函数名前加上类名限定,::被称为域解析符并且

2017-08-21 17:59:31 402

原创 C++类和对象知识点整理一

C++类和对象知识点整理(1)1、面向过程和面向对象的区别面向过程:a.自顶向下,每一个过程可以看成函数,缺点是不易改动 b.面向过程编程采取的是时间换取空间的策略 c.面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步实现,然后在使用的时候一一调用即可面向对象:a.面向对象是把构成问题的事物分成各个对象,容易修改,例如加入功能,如果是面向过程的设计,需要改动一连串

2017-08-21 14:30:15 981

原创 socket网络协议

网络由下往上分为:   物理层--                      数据链路层--网络层--                       IP协议传输层--                       TCP协议会话层--表示层和应用层--           HTTP协议 1、TCP/IP连接   手机能够使用联网功能是因为手机底层实现了TC

2017-08-16 20:37:38 428

原创 指针面试例题解析———总结

*指针是C和C++的精华所在,也是C和C++ 的一个十分重要的概念。一个数据对象的内存地址称为该数据对象的指针。指针具有不同的类型,可以指向不同的数据存储体面试例题1:指针和引用的差别?答案:(1)非空区别:在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。(2)合法性区别:在使用引用之前不需要测试它的合法性,相反,指针则应该总是被测试,防止其为空(3)可修改区别

2017-08-09 17:52:52 424

原创 四层网络模型和七层网络模型

OSI七层网络模型 Open System Interconnection第一层 物理层   第一层负责最后将信息编码成电流脉冲或其它信号用于网上传输。它由计算机和网络介质之间的实际界面组成,可定义电气信号、符号、线的状态和时钟要求、数据编码和数据传输用的连接器。如最常用的RS-232规范、10BASE-T的曼彻斯特编码以及RJ-45就属于第一层。所有比物理层高的层都通过事先定义好的接

2017-08-09 10:52:32 488

原创 关键字volatile的含义

volatile 的意思是“易失的,易改变的”。这个限定词的含义是向编译器指明变量的内容可能会由于其他程序的修改而变化。通常在程序中申明了一个变量时,编译器会尽量把它存放在通用寄存器中,例如ebx。当CPU把其值放到ebx中后就不会再关心对应内存中的值。若此时其他程序(例如内核程序或一个中断)修改了内存中它的值,ebx中的值并不会随之更新。为了解决这种情况就创建了volatile限定词,让代码在引

2017-08-09 10:35:59 982 1

原创 #include <iostream>和using namespace std;

#include 是个包含命令,就是把iostream.h这个文件里的内容复制到这个地方ostream.h是input output stream的简写,意思为标准的输入输出流头文件。它包含: (1)cin>>"要输入的内容" (2)cout 这两个输入输出的方法需要#include来声明头文件。 iostream.h与iostream是不同的。 #include是在旧的标准C++中使用

2017-08-08 22:54:17 11088 1

转载 Pthread_mutex_t锁

[cpp] view plain copylinux下为了多线程同步,通常用到锁的概念。  posix下抽象了一个锁类型的结构:ptread_mutex_t。通过对该结构的操作,来判断资源是否可以访问。顾名思义,加锁(lock)后,别人就无法打开,只有当锁没有关闭(unlock)的时候才能访问资源。  它主要用如下5个函数进行操作。  1:pthread

2017-08-08 09:19:36 338

原创 函数的可重入和C++中Sendmessage 和 PostMessage 的区别

1、什么是函数的可重入性?重入一般可以理解为一个函数在同时多次调用,列如操作系统在进程调度过程中,或者单片机,处理器等的中断的时候发生冲入的现象一般可重入的函数必须满足下列3个条件:(1)可以在执行的过程中被打断(2)被打断之后,该函数一次调用执行完以前,可以再次被调用(3)再次调用执行完以后,被打断的上次调用可以继续恢复执行,并正确执行.可重入与线程安全

2017-08-04 09:32:58 777

原创 GetMemory函数解析

GetMemory函数代码1:void GetMemory(char *p){ p = (char*)malloc(100);}int main(int argc, char *argv[]){ char *str = NULL; GetMemory(str); strcpy(str, "Hello"); return 0;}str没有得到分配内存的

2017-08-03 10:09:52 496

原创 线程调度和yeild()

1.调用线程的yeild()方法,只会使与当前线程相同优先级的线程获得运行机会注:是当前线程退出时间片(当多个线程在执行的时候,系统会为每个线程分配时间片,当这个时间片用完后,这个线程暂不执行,转到下一个线程,再给该线程分配时间片,在执行)yelid,当代码执行到这时即使时间片没有用完,也退出当前线程,转到下一线程2.线程调度、、、、、、、、、计算机通常只有1个CP

2017-08-03 09:49:41 646

原创 什么是原子操作?

什么是原子操作?原子操作:就是在执行某一操作时不被打断。Linux原子操作问题来源于中断、进程的抢占以及多核smp系统中程序的并发执行。对于临界区的操作可以加锁来保证原子性,对于全局变量或静态变量操作则需要依赖于硬件平台的原子变量操作。因此原子操作有两类:一类是各种临界区的锁,一类是操作原子变量的函数。对于arm来说,单条汇编指令都是原子的,多核smp也

2017-08-02 17:24:17 6342

原创 Nandflash和Norflash区别

Nandflash和No人flash最大区别:(1)容量的大小:Norflash容量小,约有64K~2M,Nandflash,约128M~256G。(2)因此Norflash一个地址对应一个空间,可直接访问,Nandflash无法直接访问(3)Nandflash容易有坏块,需要通过软件格式化(4)价格上Norflash>NandflashIntel总结:擦除和编程的

2017-08-02 17:13:19 1165

原创 写一段程序,判断一个操作系统是16位还是32位?

法一:利用sizeof可以使用sizeof计算int的字节长度来判断是32位还是16位。32位机器下:sizeof(int) = 4;16位机器下:sizeof(int) = 2但是实际中可能64位的机器sizeof(int)也是4字节,因为很多时候是编译器决定要占用几个字节法二:利用最大值1. 机器位数不同则表示的数字的最大值是不同的。

2017-07-28 10:58:35 2043 1

原创 物理地址和逻辑地址

物理地址和逻辑地址概述 当操作数是存放在存储器中时,存储器的存储单元的物理地址有两部分组成。一部分是偏移地址,一部分是段地址。在8086/8088的各种寻址方式中,寻找存储单元所需的偏移地址可由各种成分组成,称为有效地址,用EA表示。可以通过存储器寻址方式获得有效地址。  8086/8088CPU的地址线有20根,直接寻址220=1MB。而8086/8088CPU的字长为16位,直

2017-07-28 10:12:43 2775

原创 C/C++面试题3

1、/etc/services 定义了网络服务的端口2、Linux操作系统包括了3种不同的类型的进程(1)交互进程:由一个shell启动的进程,既可以在前台运行也可以在后台运行(2)批处理进程:进程序列,和终端没有关系(3)守护进程:Linux启动时的进程,并且在后台运行3、Kill发送指定的信号到相应的进程,不指定信号的将发送SIGTERM(15)让进程友好的退出 4、软

2017-07-28 10:03:01 409

转载 static关键字的作用

1.对于静态变量而言:本地化(名字冲突)、初始化=0、唯一共享性(静态区)。特别地,对于类静态成员变量:(1)属于整个类,可以直接通过类名访问而不用通过实例(2)必须初始化,类内static声明,类外初始化(不可以再加static)2.对于类静态成员函数而言,(1)没有this指针,仅能访问静态成员变量和静态成员函数,不能声明为虚函数(2)常用于多线程中的子类。----------

2017-07-19 14:06:27 291

原创 C/C++

一:ZeroMemory 和memset  的区别1:Zeromemory是由微软SDK提供的,memset属于C library里面的函数,因此Zeromemory仅适用于Windows系统2:Zeromemory是一个宏,只适用于把一段内存置0,内部还是由memset实现,memset还可以将内存置为别的字符 二:send   recvRecv(sclient,buf,st

2017-07-13 15:49:54 226

原创 new/delete 和 malloc/free 的区别

malloc和free是c语言的标准库函数,函数原型分别为void * malloc(size_t size)        参数代表字节个数  void  free(void * p)                     参数代表内存地址使用上:void func()  {      //开辟一个空间      int* p1=(int*)ma

2017-05-12 16:59:11 258

原创 new 和 delete 运算符

为了提高程序的通用性和内存的利用率,实际编程时,经常出现在程序运行过程中,根据程序对内存的实际需求来分配存储空间的情况如下列程序:int n;cin>>n;float a[n];但是编译器在编译第三行时出错,原因是定义数组时下标表达式的值必须是:编译时有明确的值的常量不过c++允许用new运算符申请动态内存的方法的解决上述程序如:float  * a = new

2017-05-12 16:50:56 658

原创 类的继承习题

1.建立一个形状类Shape作为基类,派生出圆类Circle和矩形类Rectangle,求出面积并获取相关信息。具体要求如下:(1)形状类Shape(a)保护数据成员double x,y:对于不同的形状,x和y表示不同的含义,如对于圆,x和y均表示圆的半径,而对于矩形,x表示矩形的长,y表示矩形的宽。访问权限定义为保护类型是为了能被继承下去,以便派生类能直接访问x和y。(b)公有成员函数构造函数Shape(double _x,double _y):用_x、_y分别初始化x、y。double Ge

2017-05-08 23:15:15 1175

原创 类和对象-----多态

// lesson_4.cpp : 定义控制台应用程序的入口点。//动态的多态:一个接口,多个实现,不同的对象有相同的基类,接收同一消息时,产生不同的反应#include "stdafx.h"#include using namespace std;class Biology{public:void grow(){ cout };

2017-05-08 23:12:20 310

原创 类和对象 -----继承

1:// lesson3.cpp : 定义控制台应用程序的入口点。继承:基类(父类)派生类(子类)以animal(动物)eatgrassanimal(食草动物)rabbit(兔子)举例#include "stdafx.h"#include using namespace std;class Animal   //基类{public:Animal(

2017-05-08 22:59:09 285

原创 无名管道pipe和有名管道FIFO

定义:1、管道是单向的,先进先出的,它把一个进程的输入和一个进程的输出连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)在管道的头部读取数据2、数据被一个进程读出后,将从管道中删除,其他进程将不能进行读取,当读空管道或在写入数据时管道已满将堵塞3、管道包括有名管道和无名管道,无名管道只能用于父子进程之间的通信,有名管道可以用于一个系统中任意两个管道之间的通信

2017-03-22 21:04:13 423

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除