父类指针对子类成员变量的访问
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
//对比下,这里是一个是将子类的指针传给函数参数类型为父类的指针的函参。然后利用此指针来调用子类即派生类中的成员变量虚成员变量(函数)。
//而下面的例子,则是在一个类中规定一个父类的指针类型变量,将子类的指针拷贝到此变量中,然后用这个指针变量来调用子类即派生类中的成员变量或虚成员函数
//可以看到结果是一样的,都能够调用子类的成员变量而不是父类的成员变量。
//
#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
//对比下,这里是一个是将子类的指针传给函数参数类型为父类的指针的函参。然后利用此指针来调用子类即派生类中的成员变量虚成员变量(函数)。
//而下面的例子,则是在一个类中规定一个父类的指针类型变量,将子类的指针拷贝到此变量中,然后用这个指针变量来调用子类即派生类中的成员变量或虚成员函数
//可以看到结果是一样的,都能够调用子类的成员变量而不是父类的成员变量。
相关文章推荐
- 父类指针如何访问子类数据成员变量
- C++中指向子类的父类指针访问父、子类成员时的权限和函数隐藏规则
- c++父类指针强制转为子类指针后的测试(帮助理解指针访问成员的本质)(反多态)
- 子类用反射可以访问父类中的私有成员变量及方法
- 20140424 父类指针指向子类 子类指针指向父类 父类指针不能访问子类成员(虚函数例外)
- JavaSE8基础 当父类与子类中的成员变量重名了,使用super.名字 来访问父类的成员变量
- 对用父类指针(或引用)指向父类对象和子类对象时,从而用父类指针或者引用访问成员时的深刻理解;
- C++中父类成员变量和子类成员变量重复定义及访问方法的深入探究
- c++父类指针强制转为子类指针后的测试(帮助理解指针访问成员的本质)(反多态)
- java一种极端情况下出现父类访问子类的实例变量的情况
- 父类调用子类的成员变量
- Java编程中,子类可以用用这种方法给继承父类的成员变量赋值么?
- JAVA: 子类“覆盖”父类的成员变量
- OC中继承子类对象调用方法机制 子类对象访问父类中的实例变量
- Android,子类访问父类私有成员
- 父类的私有成员变量能被子类继承吗?
- java子类成员变量与父类重名问题解释
- C++继承时子类父类同名成员变量的问题
- 父类中访问子类成员
- [C#]父类与子类的静态成员变量、实例成员变量、构造函数的执行顺序