深度探索C++对象模型
文章平均质量分 84
从对象、虚函数、数据语义学、函数语义学、对象构造语义学、对象模型之巅深度探索C++对象模型
昔拉天使
I wanna the world know my existence.
展开
-
7-2 邪门歪道、推荐书籍、结束语
#include "pch.h"#include <iostream>#include <vector>#include <ctime>#include<algorithm>using namespace std;namespace _nmsp1{ //一:不能被继承的类B //c++11 final关键字; //友元函数...原创 2020-05-06 23:27:49 · 1061 阅读 · 0 评论 -
7-1 模板及其实例化详细分析
project100.cpp#include "pch.h"#include <iostream>#include <vector>#include <ctime>#include<algorithm>#include "mytemplate.h"using namespace std;//template class ATPL&...原创 2020-05-01 21:05:12 · 325 阅读 · 0 评论 -
6-11 临时性对象的详细探讨
#include "pch.h"#include <iostream>#include <vector>#include <ctime>#include<algorithm>using namespace std;namespace _nmsp1{ //一:拷贝构造函数相关的临时性对象 class A { public: ...原创 2020-04-30 16:25:15 · 280 阅读 · 0 评论 -
6-10 重载全局new、delete,定位new及重载等
#include "pch.h"#include <iostream>#include <vector>#include <ctime>using namespace std;/*void *operator new(size_t size){ return malloc(size);}void *operator new[](size_...原创 2020-04-29 23:10:43 · 214 阅读 · 0 评论 -
6-9 嵌入式指针概念及范例、内存池改进版
#include "pch.h"#include <iostream>#include <vector>#include <ctime>using namespace std;namespace _nmsp1 //命名空间{ //一:内存池的概念和实现原理概述 //malloc:内存浪费,频繁分配小块内存,则浪费更加显得明显 //“内存池...原创 2020-04-29 07:25:18 · 254 阅读 · 0 评论 -
6-8 内存池概念、代码实现和详细分析
#include "pch.h"#include <iostream>#include <vector>#include <ctime>using namespace std;namespace _nmsp1 //命名空间{ //一:内存池的概念和实现原理概述 //malloc:内存浪费,频繁分配小块内存,则浪费更加显得明显 //“内存池...原创 2020-04-28 00:32:15 · 277 阅读 · 0 评论 -
6-7 new细节,重载类内operator new、delete
#include "pch.h"#include <iostream>#include <vector>using namespace std;namespace _nmsp1 //命名空间{ //一:new内存分配细节探秘 //我们注意到,一块内存的回收,影响范围很广,远远不是10个字节,而是一大片。 //分配内存这个事,绝不是简单的分配出去4个字节,...原创 2020-04-27 22:35:18 · 305 阅读 · 0 评论 -
6-6 new、delete的进一步认识
#include "pch.h"#include <iostream>#include <vector>using namespace std;namespace _nmsp1 //命名空间{ class A { public: int m_i; //成员变量 A() { } ~A() { } //virtual ...原创 2020-04-27 00:30:03 · 225 阅读 · 0 评论 -
6-5 new、delete运算符,内存高级话题
#include "pch.h"#include <iostream>#include <vector>#include <ctime>#include<algorithm>using namespace std;namespace _nmsp1{ //一:特别说明:《C++从入门到精通 C++98/11/14/17》第七章内容融...原创 2020-04-26 23:22:48 · 263 阅读 · 0 评论 -
6-4 局部静态对象、对象数组构造析构和内存分配
#include "pch.h"#include <iostream>#include <vector>#include <ctime>#include<algorithm>using namespace std;namespace _nmsp1{ //一:局部静态对象的构造和析构 //a)如果我们不调用myfunc()函数...原创 2020-04-26 21:55:27 · 393 阅读 · 0 评论 -
6-3 局部对象、全局对象的构造和析构
#include "pch.h"#include <iostream>#include <vector>#include <ctime>#include<algorithm>using namespace std;namespace _nmsp1 //命名空间{ //一:局部对象的构造和析构 //主要出了对象的作用于,编译...原创 2020-04-26 16:14:11 · 294 阅读 · 0 评论 -
6-2 对象复制语义学、析构函数语义学
#include "pch.h"#include <iostream>#include <vector>#include <ctime>#include<algorithm>using namespace std;namespace _nmsp1 //命名空间{ //一:对象的默认复制行为 //如果我们不写自己的拷贝构造函数...原创 2020-04-26 14:57:27 · 238 阅读 · 0 评论 -
6-1 继承体系下的对象构造步骤
#include "pch.h"#include <iostream>#include <vector>#include <ctime>#include<algorithm>using namespace std;namespace _nmsp1 //命名空间{ //一:对象的构造顺序 //二:虚函数的继续观察 //大家...原创 2020-04-26 13:01:06 · 194 阅读 · 0 评论 -
inline函数回顾和扩展细节说
#include "pch.h"#include <iostream>#include <vector>#include <ctime>using namespace std;namespace _nmsp1 //命名空间{ //一:inline函数回顾 //使用inline之后,编译器内部会有一个比较复杂的测试算法来评估这个inli...原创 2020-04-26 11:11:27 · 267 阅读 · 0 评论 -
指向成员函数的指针及vcall进一步谈
#include "pch.h"#include <iostream>#include <vector>#include <ctime>using namespace std;namespace _nmsp1 //命名空间{ //一:指向成员函数的指针 //成员函数地址,编译时就确定好的。但是,调用成员函数,是需要通过对象来调用的; /...原创 2020-04-26 01:34:55 · 283 阅读 · 0 评论 -
函数调用、继承关系性能说
#include "pch.h"#include <iostream>#include <vector>#include <ctime>using namespace std;namespace _nmsp1 //命名空间{ //一:函数调用中编译器的循环代码优化 //debug,release //(1)优化循环,把循环优化成1条语句...原创 2020-04-25 23:07:16 · 277 阅读 · 0 评论 -
RTTI运行时类型识别回顾与存储位置介绍
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>#include <vector>using namespace std;class...原创 2020-04-25 21:41:27 · 225 阅读 · 0 评论 -
多继承第二基类虚函数支持、虚继承带虚函数
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>#include <vector>using namespace std;////c...原创 2020-04-25 20:12:09 · 204 阅读 · 0 评论 -
多继承虚函数深释、第二基类,虚析构必加
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>#include <vector>using namespace std;class...原创 2020-04-25 17:21:31 · 280 阅读 · 0 评论 -
单继承虚函数趣味性测试和回顾
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>#include <vector>using namespace std;class...原创 2020-04-25 13:11:42 · 131 阅读 · 0 评论 -
静动态类型、绑定,坑点,多态体现深谈
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>#include <vector>using namespace std;class...原创 2020-04-25 12:25:56 · 235 阅读 · 0 评论 -
虚函数地址问题的vcall引入
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>#include <vector>using namespace std;class...原创 2020-04-25 10:32:25 · 291 阅读 · 0 评论 -
虚成员函数、静态成员函数调用方式
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>#include <vector>using namespace std;class ...原创 2020-04-25 02:51:41 · 329 阅读 · 0 评论 -
普通成员函数调用方式
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>#include <vector>using namespace std;class ...原创 2020-04-25 00:56:32 · 600 阅读 · 0 评论 -
成员变量地址、偏移、指针等重申
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>#include <vector>using namespace std;class...原创 2020-04-24 22:53:15 · 231 阅读 · 1 评论 -
三层结构时虚基类表内容分析
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>#include <vector>using namespace std;class...原创 2020-04-24 21:44:04 · 166 阅读 · 0 评论 -
两层结构时虚基类表内容分析
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>#include <vector>using namespace std;class...原创 2020-04-24 19:43:57 · 323 阅读 · 0 评论 -
虚基类问题的提出和初探
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>#include <vector>using namespace std;class...原创 2020-04-24 00:08:20 · 196 阅读 · 0 评论 -
多重继承数据布局与this调整深谈
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>using namespace std;class Base1{public: int m_b...原创 2020-04-23 20:46:13 · 204 阅读 · 0 评论 -
单类单继承虚函数下的数据成员布局
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>using namespace std;class Base{public: int m_bi...原创 2020-04-23 16:34:22 · 113 阅读 · 0 评论 -
单一继承下的数据成员布局
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>using namespace std;//class FAC //父类//{//public:...原创 2020-04-23 14:09:41 · 167 阅读 · 0 评论 -
数据成员存取
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>using namespace std;class FAC{public: int m_fai...原创 2020-04-23 11:26:13 · 154 阅读 · 0 评论 -
数据成员布局
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>using namespace std;#define GET(A,m) (int)(&((...原创 2020-04-23 00:57:16 · 157 阅读 · 0 评论 -
进程内存空间布局
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>using namespace std;int *ptest = new int(120);int...原创 2020-04-22 22:37:38 · 173 阅读 · 0 评论 -
数据成员绑定时机
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >#include <stdio.h>using namespace std;//string myvar= "I Love China!...原创 2020-04-22 20:30:33 · 141 阅读 · 0 评论 -
单纯的类不纯时引发的虚函数调用问题
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <time.h >using namespace std;class X{public: int x; int y; int z; //X() :x(0),...原创 2020-04-22 18:10:57 · 137 阅读 · 0 评论 -
辅助工具,vptr、vtbl创建时机
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>using namespace std;//基类1class Base1{public: virtual void f() { cout << "base1::f()" &l...原创 2020-04-22 01:38:29 · 247 阅读 · 0 评论 -
多重继承虚函数表分析
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>using namespace std;//基类1class Base1{public: virtual void f() { cout << "base1::f()" &l...原创 2020-04-21 15:05:53 · 976 阅读 · 0 评论 -
虚函数表分析
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>using namespace std;//父类class Base{public: virtual void f() { cout << "Base::f()" <<...原创 2020-04-21 14:09:00 · 155 阅读 · 0 评论 -
继承关系作用下虚函数的手工调用
// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>using namespace std;//父类class Base{public: virtual void f() { cout << "Base::f()" <<...原创 2020-04-21 00:51:24 · 224 阅读 · 0 评论
分享