C++ virtual#includeusing namespace std;class base{public:base() { no=1; }virtual void show() { cout

来源:学生作业帮助网 编辑:作业帮 时间:2024/10/02 08:45:55
C++ virtual#includeusing namespace std;class base{public:base() { no=1; }virtual void show() { cout
xT]OA+EFJ}/YX.`l(k(KR1. fSB"l؄s;Jn|XYJJñV$%GB\ډI)dek=dYؔA2߱Ҳp ߮ & ^"%<N<߿y`F˷"UHYKn_Ӥ ۯ7iقEϨwi-Vfed*T hEuJZ0Bm=T0~ݜGf : z_t4Ԡ9iW n. +L؎( ò5O`Z?֔NRPk0?"t:T/S3MOL5eCj^7 tl3FnzTϕZ68%LpNt Yfՙ\2htNQB]ڐtYOӖ@/GΡ!x̌Di9yYoyփorEFP wemV]y ZbM¼S4p)+ pwٍgzSp<{ #({0dXwoccDFco\ sLϾNjhKufm' aU< `avO577U

C++ virtual#includeusing namespace std;class base{public:base() { no=1; }virtual void show() { cout
C++ virtual
#include
using namespace std;
class base
{
public:
base() { no=1; }
virtual void show() { cout

C++ virtual#includeusing namespace std;class base{public:base() { no=1; }virtual void show() { cout
一方面是和虚函数有关系:虚函数是为了提供多态功能而设计的,多态功能是动态决定的.而非虚函数是静态编译的时候就已经生成了,决定了的.
另外一方面是和你的get函数有关系,你get函数中定义的是一个临时变量temp,这个变量在get函数执行完毕后,实际上已经析构掉了,但是如果是静态编译的内容,虽然变量析构了,但是对应的变量的成员变量的值还是固定的.即指向的地址部分内容应该还是不变的(如果是多线程程序,那么就不一定了).而对于虚函数来说,就不一定了.一旦变量析构,那么对应的内容也就不存在了.
所以,如果你把临时变量增加为static base temp,那么结果也是一样的了.
其实你在编译的时候,编译器会提示你,你使用了一个临时变量返回引用,这个warning就是提示你,可能会得到预知的行为,但不阻碍程序的运行而已.