c++
文章平均质量分 61
Ycx_lq
嘿。。。
展开
-
new 和 delete 运算符
为了提高程序的通用性和内存的利用率,实际编程时,经常出现在程序运行过程中,根据程序对内存的实际需求来分配存储空间的情况如下列程序:int n;cin>>n;float a[n];但是编译器在编译第三行时出错,原因是定义数组时下标表达式的值必须是:编译时有明确的值的常量不过c++允许用new运算符申请动态内存的方法的解决上述程序如:float * a = new原创 2017-05-12 16:50:56 · 660 阅读 · 0 评论 -
C++面向对象面试题知识点整理
面向对象a.编程是在计算机中反映世界面向系统设计带来的种种便利(1)良好的可复用性(2)易维护(3)良好的可扩充性b.以下选项中哪一个不是面向对象设计?(1)面向对象设计的三原则:继承,封装,多态(2)里氏代换原则是继承复用的基石(3)开闭原则是面向对象设计的重要特性之一,软件对扩展应该是开放的,对修改应该是关闭的。(4)防御性编程知识一种编程技巧,原创 2017-09-05 09:55:23 · 3014 阅读 · 0 评论 -
C++类和对象知识点整理四---继承
21、C++继承的概念及语法a.继承是类与类之间的关系,是一个很简单的直观概念,与现实世界中的继承类似。继承(lnheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。被继承的类称为父类或者是基类。继承的类称为子类或者是派生类,派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。b.以下是2种典型的使用继承的场景(1)当你创建的新原创 2017-09-06 15:53:23 · 309 阅读 · 0 评论 -
C++类和对象知识点整理三
10、构造函数和析构函数(重点)a.在C++中,有一种特殊的成员函数,他的名字和类名相同,没有返回值,不需要用户显式调用,用户也不能调用,而是在创建对象时自动执行,这种特殊的成员函数就是构造函数(Constructor)b.构造函数必须是public属性的,否则创建对象时无法调用,当然,设置为private,protected也不会报错,但是没有意义c.构造函数没有返回原创 2017-08-29 08:43:55 · 378 阅读 · 0 评论 -
new和delete详解
16、new和delete详解a.new和delete运算符是用于动态分配和撤销内存的运算符。对于计算机程序设计而言,变量和对象在内存中的分配都是编译器在编译程序时安排好的,这带来极大的不便,如数组必须大开小用,指针必须指向一个已经存在的变量和对象。对于不能确定需要占用多少内存的情况,动态内存是首要方法b.new用法1.开辟单变量地址空间(使用new运算符必须已知数据类原创 2017-08-29 09:21:50 · 1025 阅读 · 0 评论 -
this指针详解
17、this指针详解a.this 指针是C++中的一个关键字,也是一个const指针,它指向当前对象,通过它可以访问当前对象的所有成员。void Student :: setNam(char*name){this ->name = name; }this虽然用在类的内部,但是只有在对象被创建以后才会给this赋值,并且这个赋值的过程是编译器自动完成的,不需要用原创 2017-08-29 12:00:43 · 416 阅读 · 0 评论 -
笔试题总结
1、引用和指针的区别:相同点:都是地址的概念指针指向一块内存,它的内容是所指内存的地址,引用是地址的别名不同点:(1)指针是一个实体,而引用只是一个别名(2)引用在初始化时被定义一次,之后不可变,指针可变(3)引用没有const,而指针由const,const的指针不可变(4)引用不能为空,而指针可以为空2、C++为什么要用模板类?(1)可以用来创建原创 2017-09-23 13:47:55 · 495 阅读 · 0 评论 -
重载运算符
重载运算符的规则如下:1:C++不允许用户自定义新的运算符,只能对已有的C++运算符进行重载2:C++不能重载的运算符有5个“?:”、“.”、“::”、“sizeof”和”.*”(成员指针访问运算符)3:重载不能改变运算符对象的个数4:重载不能改变运算符的优先级和结合性5:重载的运算符函数不能有默认的参数6:重载的运算符必须和用户定义的自定义的对象一起使用,至少有一个是类对原创 2017-09-15 21:24:02 · 402 阅读 · 0 评论 -
C++常对象,常变量,长成员函数详解(转)
用const修饰的声明数据成员称为常数据成员用const修饰的声明成员函数称为常成员函数用const修饰的定义对象称为常对象变量或对象被const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始化。(一)用const修饰的声明数据成员称为常数据成员 有两种声明形式:const int cctwl;int const cctwl;不能省略转载 2017-09-16 09:01:22 · 1076 阅读 · 0 评论 -
友元函数和友元类
18、友元函数和友元类一个类中可以有public,protected,private三种属性的成员,通过对象可以访问public成员。只有本类中的函数可以访问本类的private成员,现在,将来介绍另外一种情况-----有元(friend)借助有元可以使得其他类中的成员函数以及全局范围内的函数访问当前类的private成员。b.有元函数在当前类以外定义的,不属于当前类的原创 2017-08-31 17:32:26 · 371 阅读 · 0 评论 -
C++类和对象知识点整理五----派生类的构造函数和析构函数
22、C++派生类中的构造函数a.基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成为普通的成员函数。b.在设计派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数来完成,但是大部分基类都原创 2017-09-10 20:39:14 · 425 阅读 · 0 评论 -
C++关键字static
static简介:static方法就是没有this的方法,在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用。面向过程设计中的static1.修饰静态全局变量时特点:a.该变量在全局数据区分配内存b.未经初始化的静态全局变量默认值为0c.static修饰的变量整个文件中都是可见的和全局变原创 2017-09-19 09:42:30 · 557 阅读 · 0 评论 -
引用概念
20、引用我们知道,参数的传递本质是一次赋值的过程,赋值就是对内存进行拷贝,所谓的内存拷贝,是指将一块内存上的数据复制到另一块内存上。b.c/C++禁止在函数调用时直接传递数组的内容,而是强制传递数组指针,而对于结构体和对象没有这种限制,调用函数时既可以传递指针,也可以直接传递内容;但是在C++中,我们有了一种比指针更加便捷的传递聚合类型数据的方式,那就是引用(Reference)原创 2017-09-03 08:44:00 · 1361 阅读 · 0 评论 -
C++类和对象知识点整理六-----多继承
24、C++类的多继承派生类都只有一个基类,称为单继承。除此之外,C++也支持多继承,即一个派生类可以有2个或者多个基类。b.多继承的缺点多继承容易让代码逻辑复杂,思路混乱,一直备受争议,中小型项目中较少使用,后来的Java,c#,PHP等干脆取消了多继承c.多继承的语法也很简单,将多个基类用逗号隔开即可,列如以声明了类A,类B,类C,那么可以这样来声明派生类D:原创 2017-09-12 14:52:58 · 299 阅读 · 0 评论 -
多继承代码解析
#includeusing namespace std;/*多继承的优缺点实际生活中,一些事物往往会拥有两个或两个以上事物的属性,为了解决这个问题,C++引入了多重继承的概念。多重继承的优点是对象可以调用多个基类中的接口。多重继承的缺点是容易出现继承向上的二义性*/class A{public:A(int a):m_a(a){原创 2017-09-12 15:32:36 · 377 阅读 · 0 评论 -
C++类和对象知识点整理二
7、类的成员变量和成员函数类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存,但是,在定义类的时候不能对成员变量赋值,因为类只是一种数据类型或者说是一种模板,本身不占用内存空间,而变量的值则需要内存来存储b.类的成员函数作用范围由类来决定在类内直接定义函数时,不需要在函数名前加上类名,但当成员函数定义在类外时,就必须在函数名前加上类名限定,::被称为域解析符并且原创 2017-08-21 17:59:31 · 404 阅读 · 0 评论 -
C++类和对象知识点整理一
C++类和对象知识点整理(1)1、面向过程和面向对象的区别面向过程:a.自顶向下,每一个过程可以看成函数,缺点是不易改动 b.面向过程编程采取的是时间换取空间的策略 c.面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步实现,然后在使用的时候一一调用即可面向对象:a.面向对象是把构成问题的事物分成各个对象,容易修改,例如加入功能,如果是面向过程的设计,需要改动一连串原创 2017-08-21 14:30:15 · 984 阅读 · 0 评论 -
写一段程序,判断一个操作系统是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 · 2047 阅读 · 1 评论 -
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 · 259 阅读 · 0 评论 -
类和对象 -----继承
1:// lesson3.cpp : 定义控制台应用程序的入口点。继承:基类(父类)派生类(子类)以animal(动物)eatgrassanimal(食草动物)rabbit(兔子)举例#include "stdafx.h"#include using namespace std;class Animal //基类{public:Animal(原创 2017-05-08 22:59:09 · 285 阅读 · 0 评论 -
类和对象-----多态
// lesson_4.cpp : 定义控制台应用程序的入口点。//动态的多态:一个接口,多个实现,不同的对象有相同的基类,接收同一消息时,产生不同的反应#include "stdafx.h"#include using namespace std;class Biology{public:void grow(){ cout };原创 2017-05-08 23:12:20 · 311 阅读 · 0 评论 -
类的继承习题
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 阅读 · 0 评论 -
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 · 227 阅读 · 0 评论 -
static关键字的作用
1.对于静态变量而言:本地化(名字冲突)、初始化=0、唯一共享性(静态区)。特别地,对于类静态成员变量:(1)属于整个类,可以直接通过类名访问而不用通过实例(2)必须初始化,类内static声明,类外初始化(不可以再加static)2.对于类静态成员函数而言,(1)没有this指针,仅能访问静态成员变量和静态成员函数,不能声明为虚函数(2)常用于多线程中的子类。----------转载 2017-07-19 14:06:27 · 292 阅读 · 0 评论 -
Pthread_mutex_t锁
[cpp] view plain copylinux下为了多线程同步,通常用到锁的概念。 posix下抽象了一个锁类型的结构:ptread_mutex_t。通过对该结构的操作,来判断资源是否可以访问。顾名思义,加锁(lock)后,别人就无法打开,只有当锁没有关闭(unlock)的时候才能访问资源。 它主要用如下5个函数进行操作。 1:pthread转载 2017-08-08 09:19:36 · 339 阅读 · 0 评论 -
#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 · 11101 阅读 · 1 评论 -
指针面试例题解析———总结
*指针是C和C++的精华所在,也是C和C++ 的一个十分重要的概念。一个数据对象的内存地址称为该数据对象的指针。指针具有不同的类型,可以指向不同的数据存储体面试例题1:指针和引用的差别?答案:(1)非空区别:在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。(2)合法性区别:在使用引用之前不需要测试它的合法性,相反,指针则应该总是被测试,防止其为空(3)可修改区别原创 2017-08-09 17:52:52 · 425 阅读 · 0 评论 -
线程调度和yeild()
1.调用线程的yeild()方法,只会使与当前线程相同优先级的线程获得运行机会注:是当前线程退出时间片(当多个线程在执行的时候,系统会为每个线程分配时间片,当这个时间片用完后,这个线程暂不执行,转到下一个线程,再给该线程分配时间片,在执行)yelid,当代码执行到这时即使时间片没有用完,也退出当前线程,转到下一线程2.线程调度、、、、、、、、、计算机通常只有1个CP原创 2017-08-03 09:49:41 · 646 阅读 · 0 评论 -
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 阅读 · 0 评论 -
函数的可重入和C++中Sendmessage 和 PostMessage 的区别
1、什么是函数的可重入性?重入一般可以理解为一个函数在同时多次调用,列如操作系统在进程调度过程中,或者单片机,处理器等的中断的时候发生冲入的现象一般可重入的函数必须满足下列3个条件:(1)可以在执行的过程中被打断(2)被打断之后,该函数一次调用执行完以前,可以再次被调用(3)再次调用执行完以后,被打断的上次调用可以继续恢复执行,并正确执行.可重入与线程安全原创 2017-08-04 09:32:58 · 780 阅读 · 0 评论 -
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 · 410 阅读 · 0 评论 -
物理地址和逻辑地址
物理地址和逻辑地址概述 当操作数是存放在存储器中时,存储器的存储单元的物理地址有两部分组成。一部分是偏移地址,一部分是段地址。在8086/8088的各种寻址方式中,寻找存储单元所需的偏移地址可由各种成分组成,称为有效地址,用EA表示。可以通过存储器寻址方式获得有效地址。 8086/8088CPU的地址线有20根,直接寻址220=1MB。而8086/8088CPU的字长为16位,直原创 2017-07-28 10:12:43 · 2780 阅读 · 0 评论 -
C++类和对象知识点整理七----虚基类和虚继承
25、C++虚继承和虚基类多继承(Multiple Lnheritance)是指从多个直接基类中产生派生类的能力。多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。如:菱形继承解决方法 :为了消除歧义,我们可以在成员变量前面指明它具体来自哪一个类。b.为了解决多继承时的原创 2017-09-12 17:15:58 · 414 阅读 · 0 评论