c++ 复杂类型指针 类指针 浅谈
来源:互联网 发布:mysql dmg for mac 编辑:程序博客网 时间:2024/06/05 18:54
晚上学习C++虚函数,在类指针指向问题上,卡壳了,其它的先不说,先看一段代码:
#include <iostream>
class Class1{
public:
Class1(){
a=1;
}
void print(){
std::cout <<"Class1->print()\n";
}
public:
int a;
};
class Class2:publicClass1{
public:
Class2(){
a=2;
}
void print(){
std::cout <<"Class2->print()\n";
}
public:
int a;
};
在这两个类中,Class2类公有继承了Class1类,并对父类中的成员函数和变量进行了覆盖。下面,进行两个语句。
Class1 *c;
Class2 d;
c=(Class1 *)&d;/
然后通过父类指针调用print()函数,即 c->print(); 结果发现在这里调用的是父类中Class1中的print() 函数,甚是郁闷,搞不懂,为什么,思考片刻,终于想通。先看下面一条语句,Class1 *c; c->print(); 程序不报错,并且可以顺利执行。但当我们执行c->a;这句话时,就会有问题。翻阅资料后,发现,
1. 类不占用内存,也不存在什么内存空间,只有在声明对象才开始有内存空间,声明指针依然不会有什么内存空间,
2. 函数不占用类对象的内存,即使不存在类对象,依然可以调用,只是不能访问成员变量。
至于之前出现的问题,调用c->print();这句话时,调用的是Class1中的函数,可知,指针调用普通成员函数,只与指针自身类型有关,而与其所指向的对象无关,如果想通过父类指针指向子类对象,来调用子类中被覆盖的方法,则需要把成员函数定义成虚函数;
- c++ 复杂类型指针 类指针 浅谈
- C语言指针的复杂类型说明
- 指针复杂类型
- 复杂C指针解析
- 有关指针的复杂类型
- C指针分享之“复杂指针”
- 【C语言】 浅谈指针
- 浅谈C语言指针
- 【c++】浅谈this指针
- C中复杂指针声明
- C语言复杂指针理解
- C语言复杂指针说明
- 复杂指针
- 复杂指针
- 复杂指针
- 复杂指针
- 复杂指针
- 复杂指针
- Python图形GUI工具包tkinter如何调整元件在窗口中的位置几何布局管理
- 前端一些兼容性问题
- 【多媒体封装格式详解】---ASF(WMV/WMA)
- iOS 多线程简介 一
- extern与static的链接属性分析
- c++ 复杂类型指针 类指针 浅谈
- 工作两周年记------今晚和三个兄弟一起痛快地喝了一次, 在《祝你一路顺风》的旋律中!
- C语言goto语句
- 瀑布流分别用UIScrollView和UICollectionView的两种写法
- c语言while,switch语句常用代码
- js创建对象的几种常用方式小结(推荐)
- SQL学习笔记
- 自学MFC第一篇
- UVa1437&LA4394 StringPainter