C++的基础知识
文章平均质量分 54
我想等到花开
这个作者很懒,什么都没留下…
展开
-
new和delete,malloc和free
new和delete,malloc和freenew/delete,new[]/delete[]基本格式int* p1 = new int; int* p2 = new int(3); //初始化为3int* p3 = new int[3]; //动态建立数组p3[3];delete p1;delete p2;delete p3[];原创 2021-03-04 08:11:47 · 66 阅读 · 1 评论 -
动态绑定和静态绑定
动态绑定和静态绑定如何理解绑定绑定(Binding) 是指将变量和函数名转换成地址的过程静态绑定绝大部分的顺序执行逻辑中函数调用或某个确定数据类型的class类型的对象对成员调用都属于静态绑定#include<iostream>using namespace std;class Employee {public: int m;};class Teamper :public Employee {public: size_t d_members; string d_n原创 2021-03-02 15:54:07 · 1201 阅读 · 0 评论 -
虚函数的实现机制
虚函数的实现机制每个含有虚函数的类都有一张虚函数表。在继承关系中,子类的虚函数表具有包含心,即父类的虚函数表肯定在子类中有一份完整的拷贝,一模一样。从虚函数的实现机制来讲讲为何虚函数会影响效率无论在何种情况,采用多态机制调用虚函数的时候都会比普通函数调用要慢,不管cpu缓存或其他机制做得多好。现在cpu几经很强了,如果不是设计不合理和性能要求极高,一般虚函数的开销可以忽略。当用基类指针调用虚函数的时候,能够根据指针所指的实际对象来选择到底是调用那个派生类对象的虚函数,对于这个问题的解就可以找原创 2021-02-28 18:06:29 · 624 阅读 · 0 评论 -
C++的虚函数和纯虚函数
C++的虚函数和纯虚函数虚函数类成员函数前添加virtual关键字,则该函数被称为虚函数纯虚函数在虚函数的基础上,在函数末尾加上 = 0。class Animal{ public: virtual void showname() = 0; //纯虚函数 virtual void display();//虚函数};1.纯虚函数纯虚函数,只有声明,没有实现其目的是为了给其它类提供一个可以继承的适当的基类,即所有派生类的对象都可以执行基类纯虚函数,但基类无法为纯虚函数提供一个合理的缺原创 2021-02-27 19:20:38 · 373 阅读 · 0 评论 -
析构,构造,拷贝构造函数
析构函数析构函数是C++语法里的一个特殊的机制,析构函数中可以写对对象存续期间的一些资源的释放完成对象被删除前的一些清理工作在对象的生存期结束的时候系统自动调用它,然后释放对象所属的空间如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数,请函数体为空构造函数构造函数的作用:在对象被创建时使用特定的值去构造对象,将对象初始化为一个特定的初始状态。构造函数的形式:函数名与类名相同.不能定义返回值类型,也不能有return语句,可以有形式参数,也可以没有形式参数,可以是内联函数,可以重原创 2021-02-16 16:43:36 · 183 阅读 · 0 评论 -
面向对象的理解
面向对象的理解面向对象,就是把现实中的一些相近的实例,抽象成类,类内的属性就是它们的相似点,就像狗,猫,老鼠这样的动物就可以抽象出一个动物的类来,类内可以定义一些相同的成员属性head,eye等成员变量,或者是run()等成员函数封装:把客观的事务封装成抽象的类,并且类可以把自己的数据和方法进行隐藏,只让可信类或者对象进行操作,一个类就是封装了数据以及操作这些数据的代码的逻辑实体,例如形成的动物类,就包装好了数据和函数,可以对可信的类和对象开放操作继承:从现有的类中派生出其它的类,派生类继承基类的所有原创 2021-02-16 10:25:54 · 114 阅读 · 0 评论 -
内存中的栈和堆
内存中的堆和栈堆和栈的理论知识申请方式stack:是由系统自动分配的,例如,声明在函数中的一个局部变量 int b;系统自动在栈中为b开辟空间heap:需要程序员手动申请,并指明大小,在C中的malloc函数如:char* p1 = (char*)malloc(sizeof(char));在C++中的new运算符如:int *p2 = new int[100]p1和p2本身就是在栈中的申请后系统的响应栈:只要栈中的剩余空间大于所申请的空间,系统将为程序自动提供内存,否则将报异常提原创 2021-02-15 20:08:01 · 147 阅读 · 1 评论 -
C和C++的区别
C和C++的区别1.C语言的概念C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适用于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发2.C++的概念C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计,数据抽象,面向对象程序设计,泛型程序设计等多种程序设计风格C++由C发展而来的,与C兼容。用C语言写的程序基本上可以原创 2021-02-15 17:59:38 · 1512 阅读 · 0 评论 -
const和#define的作用
const和#define的作用constC++ const允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某些值是保持不变的,如果在编译中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助1.const修饰成员变量int a=0;const int * b = &a;int * const c = &a;const int * const d = &a;只有一个const ,如果const在*的左侧,表示指针所指数据是常原创 2021-02-15 17:04:00 · 156 阅读 · 0 评论 -
static的用法
static、const、#define的用法和区别static的用法:(面向对象)静态成员变量,在类内成员变量的声明前加上关键字static,该数据成员就是类内的静态数据成员class Myclass { public: Myclass(int a,int b,int c); void GetSum(); private: int a,b,c; static int Sum;//声明静态数据成员 };...原创 2021-02-15 15:19:18 · 1980 阅读 · 0 评论 -
C++源文件从文本到可执行文件经历的过程
C++源文件从文本到可执行文件经历的过程对于C++源文件,从文本到可执行文件一般需要四个过程:**预处理阶段:**对源代码文件中的文件包含关系(头文件).预编译语句(宏定义)进行分析和替换,生成预编译文件编译阶段:...原创 2021-02-15 15:19:01 · 204 阅读 · 0 评论 -
指针和内存的关系
指针和内存的关系普通变量在内存存储的是变量的值,指针存储的是指针性变量,即其它变量的地址普通变量存储在栈区,栈的内容向下生长,动态分配的变量在堆区,堆的内容向上生长指针在内存中有属于自己的地址空间,保存的内容是指向变量的地址...原创 2021-02-15 15:18:30 · 340 阅读 · 0 评论 -
指针与引用的概念和不同
指针的概念:指针就是一个地址变量,有自己的一块空间指针大小是4个字节 1. int a = 0; 2. int *p = &a;//可以知道原创 2021-02-15 15:17:23 · 102 阅读 · 0 评论