如果空白页在最后一页,我们可以先将光标定位到最后一页,然后按键盘的【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结果就不再是本类加父类的结果(这个有点迷茫)。
我只能提供这么多信息了~
如果你有更好的解释可以给我留言,相互学习~
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)