随笔分类 - C++基础
摘要:在C语言中用来声明一个变量为外部变量,也叫全局变量; 或者声明一个函数在外部进行了定义。也就是说,用extern修饰的变量或函数在同一工程下的其他文件也可以进行调用。 1、extern对变量的声明 test.h #ifndef __TEST_H__ #define __TEST_H__ extern
阅读全文
摘要:1、默认构造函数创建类对象 在C++中,当我们定义一个类时,如果没有明确地为类编写构造函数,编译器会为我们提供一个默认的构造函数。这就是我们所说的默认构造函数。默认构造函数没有任何参数,但是它会执行一些基本的任务,比如为类中的成员变量分配内存。 2、拷贝构造函数创建类对象 拷贝构造函数在C++中是一
阅读全文
摘要:C++虚函数:当一个类中拥有至少一个虚函数,那么编译器就会构建出一个虚函数表来指示这些函数的地址,假如继承该类的子类定义并实现了一个同名并具有同样函数签名的方法重写了基类中的方法,那么虚函数表会将该函数指向新的地址。 此时多态性就体现出来了:当我们将基类的指针或引用指向子类的对象的时候,调用方法时,
阅读全文
摘要:多继承的二义性主要分为两种:(1) 调用不同基类的同名成员时可能出现二义性(2) 菱形继承下访问共同基类的成员可能出现二义性 /*多继承下调用不同基类的同名成员时可能出现二义性*/ #include<iostream> #include<stdio.h> using namespace std; c
阅读全文
摘要:一、什么是段错误? 段错误应该就是访问了不可访问的内存,这个内存区要么是不存在的,要么是受到系统保护的,还有可能是缺少文件或者文件损坏。 二、段错误产生的原因 1、访问不存在的内存地址 #include<iostream> #include<algorithm> #include<vector> #
阅读全文
摘要:(1) vector连续存储的容器,动态数组,在堆上分配空间底层实现:数组扩容机制:vector 增加(插入)新元素时,如果未超过当时的容量,则还有剩余空间,那么直接添加到最后(插入指定位置),然后调整迭代器。如果没有剩余空间了,则会重新配置原有元素个数的两倍空间,然后将原空间元素通过复制的方式初始
阅读全文
摘要:1、静态全局变量 全局变量的空间会在程序的生命周期内分配,在全局变量的前面加上static,变成静态全局变量。 #include <iostream> #include <string.h> using namespace std; static int n = 5; int main() { n
阅读全文
摘要:浅拷贝:简单的复制拷贝操作 P1的生命周期结束后,判断m_PtrAge是否为空,很明显m_PtrAge的值是0x0100,不为空,释放m_PtrAge指向的内存;P2的生命周期结束后,同样判断m_PtrAge是否为空,很明显m_PtrAge的值也是0x0100,也不为空,再次释放m_PtrAge指向
阅读全文
摘要:weak_ptr虽然是智能指针,但实际上是作为shared_ptr的辅助指针使用。weak_ptr通常不单独使用,一般用于查看对应的shared_ptr的信息。weak_ptr没有重载*,->等指针运算符。weak_ptr对象不会影响shared_ptr对象的引用计数。 #include<iostr
阅读全文
摘要:C++内存资源管理不当。比如:(1) 有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使用;(2) 有些内存资源已经被释放,后期又试图再释放一次(重复释放同一块内存会导致程序运行崩溃);(3) 没有及时释放不再使用的内存资源,造成内存泄漏,程序占用的内存资源越来越多
阅读全文
摘要:#include<iostream> #include<string.h> #include<stdio.h> using namespace std; class String { public: String(const char *str = NULL); //普通构造函数 String(co
阅读全文
摘要:C/C++编译的程序所占用内存区域一般分为以下5个部分: (1) 栈区:由编译器自动分配和释放,用来存放函数形参、函数局部变量、局部变量 (2) 堆区:一般由程序员分配和释放,malloc、free、calloc、realloc (3) 静态存储区:全局变量、静态全局变量、静态局部变量 (4) 常量
阅读全文
摘要:多态就是多种形态,C++的多态分为静态多态与动态多态。动态多态就是通过继承重写基类的虚函数实现的多态,在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。 多态的总结:(1) 用virtual关键字声明的函数叫做虚函数,虚函数肯定是类的成员函数
阅读全文