- 博客(6)
- 收藏
- 关注
原创 move应用
move函数是将一个左值强转成T&&,T&&就相当于右值,这样在进行拷贝构造或者复制运算时就可以减少临时对象的内存空间的开辟。move应用最多的场景就是在STL中,下面展示一下move与不用move的区别:#include <iostream>#include <cstring>#include <cstdlib>#include <vector>using namespace std;class Str {pu
2021-03-29 15:09:13
213
原创 C++ 函数模板和类模板(一)--泛型编程
这个文章主要简单记录类模板和函数模板在类内外定义的使用方法#include<iostream>#include<string>using namespace std;//类A内有函数模板class A{public: template<typename T> //函数模板类内书写方式 T compare(const T& a, const T& b) { return a > b ? a : b; } template&
2021-03-08 17:46:58
117
原创 c++四种强转类型的用法
C++几种强制转换类型static_cast<>() 编译时检测语法:1.用于基本数据类型之间的转换2.用于基类指针或引用和子类指针或引用之间的转换3,.把数据类型转换成空指针4.把任何类型的表达式转换成void类型dynamic_cast<>() 运行后检测语法;1.用于基类指针或引用和子类指针或引用之间的转换const_cast<>()1.常量指针被转化成非常量的指针,并且仍然指向原来的对象;2.常量引用被转换成非常量的引用,并且仍然指向原来的对
2021-02-04 15:51:44
698
原创 C++深拷贝和浅拷贝
浅拷贝:触发条件:对象赋值时即会发生。适用情况:类中没有指针变量。深拷贝:触发条件:对象赋值即会发生。适用情况:类中有指针变量。PS:浅拷贝是把类中所有的函数,变量都copy一份给另一个对象,这就造成当类中有指针变量时,指针的内存地址也会相同。当类中没有指针变量时,用深拷贝或者浅拷贝两种方法都行。class Car{public: Car(){} Car(string s){ ctr = new char[s.length()+1]; snprintf(ctr, s.lengt
2021-02-03 16:58:27
211
原创 获取虚表指针地址,虚表地址,虚函数地址
获取虚表指针地址和虚函数地址重要规则:1.同一个类的对象虚表的地址是一样的。2.虚表是一块儿专门存放类的虚函数地址(也就是函数指针)的内存。3.定义一个对象后,构造器为其分配空间,而这个指向虚表的指针始终都是在第一个,也就是说这个指针的地址就是对象地址。PS:对象地址的前四个字节存放虚表地址。#include<iostream>using namespace std;class base{public: int a;public: virtu
2021-02-02 17:07:30
888
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人