在弄word虚表得时候,按了下Ctrl和shift和enter,出现了几十页空白页?

在弄word虚表得时候,按了下Ctrl和shift和enter,出现了几十页空白页?,第1张

空白页在最后一页的删除方法

如果空白页在最后一页,我们可以先将光标定位到最后一页,然后按键盘的【Backspace】或【Delete】键来删除空白页。

删除分页符

我们先将Word视图模式设置成“草稿”(注意Word2010版和Word2013是“草稿”,2003、2007设置为“普通视图”),然后我们就可以看到一条横虚线,这就是分页符,它就是导致我们出现空白页的原因,将其删除,再回到默认的“页面视图”空白页就木有了。

华而不实:花开得好看,但不结果实。比喻外表好看,内容空虚.

金玉其外,败絮其中 解释: 外面象金象玉,里面却是破棉絮。比喻外表很华美,而里面一团糟。

外强中干 解释: 干:枯竭。形容外表强壮,内里空虚 .

绣花枕头 解释: 比喻徒有外表而无学识才能的人。

虚有其表 解释: 虚:空;表:表面,外貌。空有好看的外表,实际上不行。指有名无实。

银样蜡枪头释: 样子象银子实际是焊锡做的枪头。比喻外表很好看,实际上不中用。

质非文是 解释: 徒有华美的外表,而无相应的实质。

对于一个类如果有虚函数,就会在这个类中创建一个虚表,也就会产生一个虚指针指向这个虚表。

既然有一个指针指向了虚表,这个类派生后,在派生类中就不必再创建虚表,如果派生类还有自己的虚函数,那么只在派生类中创建该虚函数的一个虚表,产生一个指向该虚表的指针。

为每个类设置虚表,初始化虚指针,为虚函数调用插入代码都是自动发生的,不必担心这些。

(我看到过虚继承下虚表问题的分析,直接继承下没看过,特此又分析了一下,修改)

#include<iostream>

using namespace std

class A

{

public:

virtual void a(){}

}

class B:public virtual A

{

public:

virtual void b(){}

}

int main()

{

cout<<sizeof(A)<<endl

cout<<sizeof(B)<<endl

}

对于这个程序,你大概是在vc6.0下运行的吧,在vc下结果是4和12。我用的编译器是g++,对于这段程序的结果确实都为4.

因编译器不同导致结果不同这个我倒是没注意,这样可以得出,对虚函数这里的处理机制和编译器也是有关的,g++编译器还是更符合新的标准。

把虚继承virtual去掉再运行,在codeblocks下,g++编译运行结果都为4. vc下编译运行结果也都为4.

在分析一个例子:

#include<iostream>

using namespace std

class A

{

char j[3]

public:

virtual void a(){}

}

class B:public A

{

char k[3]

public:

virtual void b(){}

}

class C:public B

{

char m[3]

public:

virtual void c(){}

}

int main()

{

cout<<sizeof(A)<<endl

cout<<sizeof(B)<<endl

cout<<sizeof(C)<<endl

}

这个直接继承的例子,在vc下,codeblocks下结果都为 8 12 16.

再看这个直接继承的例子:

#include<iostream>

using namespace std

class A

{

public:

virtual void a(){}

}

class B:public A

{

public:

virtual void b(){}

}

class C:public B

{

public:

virtual void c(){}

}

int main()

{

cout<<sizeof(A)<<endl

cout<<sizeof(B)<<endl

cout<<sizeof(C)<<endl

}

vc下河codeblocks下结果都为 4. 这两个程序说明,直接继承下,输出结果应当是本类所占的字节加父类数据成员所占字节,父类的虚指针所占字节没有加上。

加入虚继承后:

#include<iostream>

using namespace std

class A

{

char j[3]

public:

virtual void a(){}

}

class B:public virtual A

{

char k[3]

public:

virtual void b(){}

}

class C:public virtual B

{

char m[3]

public:

virtual void c(){}

}

int main()

{

cout<<sizeof(A)<<endl

cout<<sizeof(B)<<endl

cout<<sizeof(C)<<endl

}

这段代码,在codeblocks下g++编译运行结果为:8 16 24.

在vc6.0下编译运行结果为:8 20 32.

能够分析出codeblocks下的结果是本类加上父类的结果。vc下是 本类加父类后又加了4个字节。

但是这段代码:

#include<iostream>

using namespace std

class A

{

public:

virtual void a(){}

}

class B:public virtual A

{

public:

virtual void b(){}

}

class C:public virtual B

{

public:

virtual void c(){}

}

int main()

{

cout<<sizeof(A)<<endl

cout<<sizeof(B)<<endl

cout<<sizeof(C)<<endl

}

codeblocks下编译运行结果为 4 4 4.

vc下编译运行结果为:4 12 20.

从结果来看,vc下是 本类加父类后又加了4个字节。而codeblocks结果就不再是本类加父类的结果(这个有点迷茫)。

我只能提供这么多信息了~

如果你有更好的解释可以给我留言,相互学习~


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/239664.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存