基类指针引用派生类对象

#include<iostream>

#include<cstring>

using namespace std;

class A{

char name[20];

public:

void put_name(char *n){ strcpy_s(name, n); }

void get_name()const{

cout << name << endl;

};

};

class B:public A{

char num[20];

public:

void put_num(char *n){ strcpy_s(num, n); }

void get_num()const{

cout << num << endl;

}

};

int main(){

A *A_point;

A A_obj;

B *B_point;

B B_obj;

A_point = &A_obj;

A_point->put_name("li ming");

A_point->get_name();

//B_point = &A_obj;派生类的指针无法引用基类的对象

A_point = &B_obj;//基类指针却可以引用派生类对象

A_point->put_name("wu lei");

A_point->get_name();

//注意基类指针只可以使用自己基类的函数

//例如

//A_point->put_num("1111");错误!

((B *)A_point)->put_name("0370 - 2815645");

//把指针类型显示转换成派生类就可以调用派生类的成员

((B *)A_point)->get_name();

system("pause");

return 0;

}

时间: 2024-12-09 12:58:45

基类指针引用派生类对象的相关文章

基类指针和派生类指针的使用总结

1 基类指针指向基类对象(正常使用) 2 派生类指针指向派生类对象(正常使用,不管是不是虚函数,调用的都是派生类的函数) 3 基类指针指向派生类对象(多态的体现,虚函数的话调用的是派生类的,非虚函数的话调用的是基类的) 4 派生类指针指向基类对象(一般不要这么用) 参考资料: http://blog.csdn.net/monkeyduck/article/details/15506435 [c++]实例演示类继承中派生类到基类的转换及虚函数 基类指针和派生类指针的使用总结

C++的继承操作---基类指针访问派生类问题---基类成员恢复访问属性问题

#include "stdafx.h" #include <iostream> #include <algorithm> using namespace std; class Base { public: int num; virtual void func() { cout<<"Do something in Base"<<endl; } }; class Derived:private Base { public:

基类指针和派生类指针的使用总结2

为了做图像处理,需要用摄像头,搜到实验室只有一个摄像头,是国安的,具体参数在终端中看到: 本来担心这个摄像头在6410中能不能用,结果插上后得到如上显示,知道该摄像头是uvc的,可用,参考文章链接: http://www.cnblogs.com/emouse/archive/2013/03/03/2941938.html 在网上到处都可以下到ok6410摄像头测试程序,下载链接:http://download.csdn.net/download/harryching/5108478 于是下载后按

基类成员在派生类中的访问属性——总结

首先回顾一下三种成员访问限定符: public(公用的):既可以被本类中的成员函数所引用,也可以被类的作用域内的其他函数(即类外)引用. private(私有的):只能被本类中的成员函数引用,类外不能调用(友元类除外) protected(受保护的):不能被类外访问,但可以在派生类的成员函数访问. 接下来就用一张表总结一下基类成员在派生类中的访问属性: 参考资料:<C++程序设计(第二版)>--谭浩强

c++ A类包含B类指针,B类包含A类指针的情况

#include<stdio.h> class Bclass; class Aclass { public: friend Bclass; void func() { pB->funcB(); } int data; Bclass* pB; }; class Bclass { public: friend Aclass; void funcB() { p->func(); } Aclass* p; int data; }; int main() { return 0; } 编译结果

类指针引用

类的对象指针和二级指针 1 #include <iostream> 2 3 class myclass 4 { 5 public: 6 int x; 7 int y; 8 public: 9 myclass(int, int);//构造函数 10 void printxy(); 11 }; 12 13 myclass::myclass(int a, int b) :x(a), y(b)//构造函数 14 { 15 16 } 17 18 void myclass::printxy() 19 {

创建类以及引用一个类

<?php class Table { private $row; private $col; private $border; private $width; public function __construct($row, $col, $border, $width) { $this->row = $row; $this->col = $col; $this->border = $border; $this->width = $width; } public funct

派生类和基类的转换

指针引用分四种情况: 1.直接用基类指针引用基类对象 2.直接用派生指针引用派生对象 3.由基类指针引用派生类对象,由于派生类也是基类对象(包含关系),所以这种引用是安全的.但是只能引用基类成员,若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误.(解决该问题的答案是虚函数和多态性) 4.用派生类指针引用基类对象,这种方式会导致编译器报错.必须先把派生类指针强制转换成基类指针. 如果基类和派生类都定义了同名函数,通过对象指针调用成员函数时,到底调用哪里的函数由指针的原始类型决

静态联编,动态联编,类指针之间的关系,虚函数与多态性,纯虚函数,虚析构函数

1.静态联编,是程序的匹配,连接在编译阶段实现,也称为早期匹配.重载函数使用静态联编. 2.动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编.switch语句和if语句是动态联编的例子. #include<iostream> void go(int num) { } void go(char *str) { } //class //::在一个类中 class A { public: void go(int num) { } void go(char *str) { } }; void