您的位置:首页 > 其它

父类指针对子类成员变量的访问

2010-07-09 19:44 232 查看
// Delxx.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>

class parent{

public:
//parent(int x):parentx(x){};
virtual void Get(){
printf("parentx=%d",parentx);
};
virtual void Stop()
{
printf("stop");
};

int parentx;

};

class child:public parent
{
public:
//child(int x):childx(x){};
virtual void Get(){
printf("childx=%d/n/n",childx);};
virtual void Stop(){

};

int childx;
};

class client{
public:
parent* ptr;
client(){};
BeforDoing(parent* p){

ptr=p;

};
Do()
{

ptr->Get();
}

};

void Print(parent* ptr)
{

ptr->Get();
}

int main(int argc, char* argv[])
{
printf("Hello World!/n");

child childobject;
childobject.childx=100;
childobject.parentx=200;
Print(&childobject); //example1:use this parent class pointer to call the member function in subclass.

client clientobject;
clientobject.BeforDoing(&childobject); //example2:copy subclass pointer to the original class pointer.
clientobject.Do(); //use this original class pointer to call the member function in subclass.

return 0;
}

//result:childx=100

//对比下,这里是一个是将子类的指针传给函数参数类型为父类的指针的函参。然后利用此指针来调用子类即派生类中的成员变量虚成员变量(函数)。
//而下面的例子,则是在一个类中规定一个父类的指针类型变量,将子类的指针拷贝到此变量中,然后用这个指针变量来调用子类即派生类中的成员变量或虚成员函数
//可以看到结果是一样的,都能够调用子类的成员变量而不是父类的成员变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐