1、word 如何清除项目黑点

选中文字区域,选择开始->样式->全部清除

2、公式编辑器输入矩阵

先输入方括号,接着选择格式->中间对齐,然后点下面红色框里的东西,组后输入数据

 

3、vptr虚指针    vtbl虚函数表   vbtbl  虚基表

4、普通继承例子

#include<iostream>
using namespace std;
class A
{
}; class B
{
char ch;
virtual void func0() { }
}; class C
{
char ch1;
char ch2;
virtual void func() { }
virtual void func1() { }
}; class D: public A, public C
{
char d;
virtual void func() { }
virtual void func1() { }
}; class E: public B, public C
{
int e;
virtual void func0() { }
virtual void func1() { }
}; int main(void)
{
cout<<"A="<<sizeof(A)<<endl; //result=1
cout<<"B="<<sizeof(B)<<endl; //result=8
cout<<"C="<<sizeof(C)<<endl; //result=8
cout<<"D="<<sizeof(D)<<endl; //result=12 注意
cout<<"E="<<sizeof(E)<<endl; //result=20 注意有两个虚函数指针
return 0;
}

sizeof(E)=20,其在内存中的分布:

class Derived size(20):
+---
| +--- (base class B)
| | {vfptr}
| | ch
| +---
| +--- (base class C)
| | {vfptr}
| | ch1 ch2
| +---
| e
+---
+--- (virtual base CommonBase)
+---
 

前面三个A、B、C类的内存占用空间大小就不需要解释了,注意一下内存对齐就可以理解了。

求sizeof(D)的时候,需要明白,首先VPTR指向的虚函数表中保存的是类D中的两个虚函数的地址,然后存放基类C中的两个数据成员ch1、ch2,注意内存对齐,然后存放数据成员d,这样4+4+4=12。

求sizeof(E)的时候,首先是类B的虚函数地址,然后类B中的数据成员,再然后是类C的虚函数地址,然后类C中的数据成员,最后是类E中的数据成员e,同样注意内存对齐,这样4+4+4+4+4=20。

5、虚继承与普通继承对比

虚继承代码如下:

#include<iostream>
using namespace std;
class CommonBase
{
int co;
  int co1;    
  int co2;
}; class Base1: virtual public CommonBase//虚继承1处
{
public:
virtual void print1() { }
virtual void print2() { }
private:
int b1;
}; class Base2: virtual public CommonBase//虚继承2处
{
public:
virtual void dump1() { }
virtual void dump2() { }
private:
int b2;
}; class Derived: public Base1, public Base2
{
public:
void print2() { }
void dump2() { }
private:
int d;
}; int main(void)
{
cout<<sizeof(CommonBase)<<endl;//4
cout<<sizeof(Base1)<<endl;//24
cout<<sizeof(Base2)<<endl;//24
cout<<sizeof(Derived)<<endl;//40
return 0;
}
  • sizeof(Derived)=40,其在内存中分布的情况如下:
class Derived size(40):
+---
| +--- (base class Base1)
| | {vfptr}//4字节
| | {vbptr}//4字节
| | b1//4字节
| +---
| +--- (base class Base2)
| | {vfptr}//4字节
| | {vbptr}//4字节
| | b2//4字节
| +---
| d//4字节
+---
+--- (virtual base CommonBase)
| co//4字节
 | co1//4字节
 | co2//4字节+---
  • 如果把上述代码中的1,2两处的virtual删除,那么得到的结果sizeof(Derived)是44>40(commonBase类越大,虚继承的的作用就越大),内存示意图如下:
class Derived size(44):
+---
| +--- (base class Base1)
| | {vfptr} //4字节
| | b1+--- //4字节
 +---
+--- (base class CommonBase) 
| co             //4字节
| co1 //4字节
| co2             //4字节
| +---
| +--- (base class Base2)
| | {vfptr} //4字节
| | b2//4字节
 +---
+--- (base class CommonBase) 
| co//4字节
 | co1 //4字节
 | co2//4字节
 | +---
| d//4字节
+---

6、也可以用函数指针实现多态

#include<iostream>
using namespace std; typedef void (*fVoid)( );//函数指针 class A
{
public:
static void test()
{
printf("hello A\n");
} fVoid print; A()
{
print = A::test;
}
}; class B : public A
{
public:
static void test()
{
printf("hello B\n");
} B()
{
print = B::test;
}
}; int main(void)
{
A aa;
aa.print(); B b;
A* a = &b;
    a->print();//函数指针实现多态

    return 0;
}

7、共有继承,子类和父类出现同样名称的变量

8、强类型语言和弱类型语言

2014 0416 word清楚项目黑点 输入矩阵 普通继承和虚继承 函数指针实现多态 强弱类型语言的更多相关文章

  1. PowerDesigner(二)-项目和框架矩阵(转)

    项目和框架矩阵 项目是PowerDesigner 15的新概念,通过项目系统分析/设计人员可以对模型以及各类文档进行分组.项目也可以包含框架矩阵,以表格的形式体现各个模型之间的关系. 项目和框架矩阵解 ...

  2. MathType可以在Word、PPT中插入矩阵吗

    工科学生或者老师在写论文时最头痛的就是编辑公式,因为word自带的公式编辑器往往满足不了专业的公式需求,MathType就很好的解决了这个问题.在进行公式编辑时,难免会遇到输入矩阵的情况,那么怎么输入 ...

  3. 一个word合并项目的分布式架构设计

    一个word合并项目的分布式架构设计 项目背景与问题起源 我们要给一个客户做word生成报告以及报告合并的工作,要合并的报告非常多,而且每个报告也比较大,一个多的报告大概有200页以上.我们用c#操作 ...

  4. 如何修改word的项目编号

    在操作word文档时,有时会遇到word文档中的项目编号不是自己需要的,并造成word项目编号的混乱,如何word中的两级项目编号不统一,为解决会word的项目编号混乱问题,小编将教大家如何修改wor ...

  5. Matlab 如何输入矩阵

    A=[1 2 3;4 5 6;7 8 9],每行之间用分号隔开 也可以用循环控制输入 n=input('请输入矩阵阶数:') for i=1:n     for j=1:n         a(i,j ...

  6. C语言之文件操作04——输入矩阵a,b,求乘积c,并打印a,b,c到文件

    //文件与数组结合 /* ================================================================= 题目:输入矩阵a,b,求乘积c,并打印a, ...

  7. 编程计算2×3阶矩阵A和3×2阶矩阵B之积C。 矩阵相乘的基本方法是: 矩阵A的第i行的所有元素同矩阵B第j列的元素对应相乘, 并把相乘的结果相加,最终得到的值就是矩阵C的第i行第j列的值。 要求: (1)从键盘分别输入矩阵A和B, 输出乘积矩阵C (2) **输入提示信息为: 输入矩阵A之前提示:"Input 2*3 matrix a:\n" 输入矩阵B之前提示

    编程计算2×3阶矩阵A和3×2阶矩阵B之积C. 矩阵相乘的基本方法是: 矩阵A的第i行的所有元素同矩阵B第j列的元素对应相乘, 并把相乘的结果相加,最终得到的值就是矩阵C的第i行第j列的值. 要求: ...

  8. 使用LaTeX输入矩阵

    当前各种文本编辑器支持的LaTeX数学公式库大多基于KaTeX,或者在Web中用MathJax的比较多,下面给出一种在Web中输入矩阵的例子 $$\left[ \begin{array}{cccc}a ...

  9. MathType输入矩阵和行列式的技巧

    高等代数里,经常要使用到矩阵和行列式,尤其是在写论文时,如何编辑矩阵和行列式呢?比较好的方法就是使用专业的公式编辑器MathType进行编辑,下面就一起来学习具体的编辑技巧. 具体步骤如下: 步骤一 ...

随机推荐

  1. idea 中使用dataBase插件

    最近一段时间重新开始学习Java 使用IntelliJ 发现有个链接数据库插件挺好用的,并且反应速度还挺快的记录下. 点击步骤:View → Tool Windows → data 进行数据库链接 发 ...

  2. 关于RF中元素定位问题

    今天碰到一个定位元素的问题,用CLASS定位. 调试后是这样的情况: 显示定位正确,字体被覆盖了.完了,在RF中跑脚本的时候,报错,说没有找到元素 . 郁闷,各种试,还是没有定位到. 最好问前端,教我 ...

  3. Java数据结构----集合

    Java的集合可以分为两类, 第一类是以数组为代表,这类集合可以描述线性表类型的数据结构,以Collection为基类,其中自己用过或者了解的有 实现List接口的类:LinkedList,Array ...

  4. 搭建单机版spark

    二.下载软件 JDK,Scala,SBT,Maven 版本信息如下: JDK jdk-7u79-linux-x64.gz Scala scala-2.10.5.tgz 三.解压上述文件并进行环境变量配 ...

  5. Java-Class-C:com.ylbtech.api.platfrom.util.RedisUtils.class

    ylbtech-Java-Class-C:com.ylbtech.api.platfrom.util.RedisUtils.class 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶 ...

  6. 牛客 判断t1树中是否含有与t2树拓扑结构完全相同的子树

    题目链接:https://www.nowcoder.com/practice/5a41ce17e8194e1688aa83a73137f7ee?tpId=101&tqId=33239& ...

  7. UVA 10005 Packing polygons(最小圆覆盖)

    裸的模板题 AC代码: #include<cstdio> #include<cmath> #include<algorithm> #include<iostr ...

  8. Codeforces 1189C Candies!

    题目链接:http://codeforces.com/problemset/problem/1189/C 思路:前缀和. AC代码: #include<bits/stdc++.h> usi ...

  9. Feign 系列(02)Why Feign

    Feign 系列(02)Why Feign [toc] 1. 什么是 Feign Feign 的英文表意为"假装,伪装,变形", 是一个 Http 请求调用的轻量级框架,可以以 J ...

  10. Redis数据结构之快速列表-quicklist

    链表 在Redis的早期版本中,存储list列表结构时,如果元素少则使用压缩列表ziplist,否则使用双向链表linkedlist // 链表节点 struct listNode<T> ...