基类指针引用派生类对象

简介:

#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;

}


本文转自 神迹难觅 51CTO博客,原文链接:http://blog.51cto.com/ji123/1917074,如需转载请自行联系原作者
相关文章
|
8天前
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
17 1
|
28天前
|
算法 C语言
通过指针引用数组
通过指针引用数组
26 1
|
28天前
|
算法 C语言
通过指针引用字符串
通过指针引用字符串
27 1
|
28天前
|
C++
C++中的const指针与const引用
C++中的const指针与const引用
34 2
|
5天前
|
算法 Java 程序员
面向对象编程(OOP)通过对象组合构建软件,C语言虽是过程式语言,但可通过结构体、函数指针模拟OOP特性
【6月更文挑战第15天】面向对象编程(OOP)通过对象组合构建软件,C语言虽是过程式语言,但可通过结构体、函数指针模拟OOP特性。封装可使用结构体封装数据和方法,如模拟矩形对象。继承则通过结构体嵌套实现静态继承。多态可通过函数指针模拟,但C不支持虚函数表,实现复杂。C语言能体现OOP思想,但不如C++、Java等语言原生支持。
23 7
|
14天前
|
C++
【C++系列】指针对象和对象指针的区别
这段内容介绍了C++中`ListNode`对象和指针的两种使用方式以及它们的区别。首先,`ListNode dummy(0); ListNode* cur = &dummy;创建了一个`ListNode`对象`dummy`在栈上,`cur`是`dummy`的地址。而`ListNode* dummy = new ListNode(0); ListNode* cur = dummy;`则在堆上分配了一个`ListNode`,`dummy`和`cur`都是指向该对象的指针。使用`&dummy`作为虚拟头节点简化链表操作,避免特殊处理。栈分配内存自动管理但生命周期受限,堆分配内存需手动释放且速度较慢。
|
15天前
|
存储 安全 编译器
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
6 0
|
15天前
|
存储 安全 编译器
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
11 2
|
18天前
|
C++ 存储 Java
C++ 引用和指针:内存地址、创建方法及应用解析
'markdown'C++ 中的引用是现有变量的别名,用 `&` 创建。例如:`string &meal = food;`。指针通过 `&` 获取变量内存地址,用 `*` 创建。指针变量存储地址,如 `string *ptr = &food;`。引用不可为空且不可变,指针可为空且可变,适用于动态内存和复杂数据结构。两者在函数参数传递和效率提升方面各有优势。 ```