随笔分类 - C/C++语言
摘要:方法1:将构造函数修饰成私有时,该类不能被继承。你也许可能会问,构造函数声明成私有,在外面使用时就不能创建对象了,不能创建对象的类还有意义吗?答案是有意义,单例模式就是将类的构造函数声明成私有的。 #include <iostream> using namespace std; class A {
阅读全文
摘要:1:vector的底层实现原理是数组,占用连续的内存空间 #include <iostream> #include <vector> using namespace std; void init_vector(vector<int> &arr) { for (int i = 0; i < 10; i
阅读全文
摘要:概念: 在一个类中,如果定义有指针成员变量,该指针指向new出来的堆内存。在用一个已经存在的对象初始化一个新对象时调用拷贝构造函数,如果拷贝构造函数中只是将已有对象的指针成员赋值给新对象的指针成员,那么就叫浅拷贝,浅拷贝以后两个对象中的指针指针成员指向同一个堆内存,在对象析构时,同一块堆内存会释放两
阅读全文
摘要:结论: 实现多态时,我们通过基类指针指向子类对象,在delete基类指针时,我们希望先调用子类的析构函数,再调用父类的析构函数,要实现这个目的,析构函数就必须定义成虚函数,否则只会调用父类的析构函数,子类的析构函数不会被调用。 实验1:析构函数不定义成虚函数 #include <iostream>
阅读全文
摘要:内核空间和用户空间: 我们在编写程序时使用的内存空间叫虚拟内存,程序在运行时,要完成虚拟内存到物理内存的转换。假如在32位环境上,理论上我们可以使用的虚拟内存空间是4GB,但实际上这4GB并不能完全给我们使用,有一部分内存是固定分配给操作系统内核的,分配给操作系统的这部分内存我们叫它内核空间,除去内
阅读全文
摘要:我们知道计算机中内存是以字节为单位划分的,CPU通过地址总线来访问内存,CPU一个时钟周期内能处理多少字节的数据,就命令地址总线读取几个字节的数据。举个例子:32位的CPU,一次能处理32bit的数据,也就是4字节的数据,那么CPU就命令地址总线一次性读取4字节的数据,即每次的步长都为4字节,只对地
阅读全文
摘要:野指针: 野指针不同于空指针,空指针是指一个指针的值为null,而野指针的值并不为null,野指针会指向一段实际的内存,只是它指向哪里我们并不知情,或者是它所指向的内存空间已经被释放,所以在实际使用的过程中,我们并不能通过指针判空去识别一个指针是否为野指针。避免野指针只能靠我们自己养成良好的编程习惯
阅读全文
摘要:final: final修饰符可用于修饰类,放在类名后面,被final修饰符修饰的类不能被继承。示例代码: // 正确的示范 #include <iostream> class A { public: void show_a_info() { std::cout << "i am class A"
阅读全文
摘要:重载: 重载是指在同一个作用域下,函数的函数名相同,但是函数参数的个数,或者参数的类型,参数的顺序不同。这时函数之间就构成了重载关系,这里需要注意的是,如果函数的参数列表完全相同,仅仅是返回值类型不同并不能构成重载。同一个作用域又怎么理解呢?在这里主要分两种情况讨论,一种是在类外但是函数在同一个CP
阅读全文
摘要:extern 关键字: 首先还是先看一下 extern 关键字的作用:extern关键字可以用于声明变量或函数,以标示变量或函数的定义在别的文件中,提示编译器遇到此变量或函数时在其他模块中寻找其定义。 通常情况下,比如我们在头文件 "b.h" 中声明了一个函数,然后在 "b.cpp" 中实现了该函数
阅读全文

浙公网安备 33010602011771号