C++继承的一点理解
来源:互联网 发布:打卡机怎么下载数据 编辑:程序博客网 时间:2024/05/15 09:53
本人C++刚入门,最近在看C++的继承,感觉越看越糊涂,然后就跑了两段代码(程序员面试宝典里面的变形版)看看,稍微增进了一下理解。
下面把代码贴出来,大家可以跟我一样,先自己想想结果,然后编译一下,看看哪里理解还有偏差。
</pre><pre name="code" class="cpp">#include "stdafx.h"#include <iostream>using namespace std;class A{protected:int m_data;public:int A_data;public :A(int data = 0){m_data = 0;}int GetData(){return doGetData();}int doGetData(){return m_data;}};class B :public A{// protected: // int m_data;public:B(int data=2){m_data = data;}virtualint doGetData(){return m_data;}};class C:public B{// protected:// int m_data;public:C(int data=2){m_data = data;}int doGetData(){return m_data;}};void main( ){C c(10);cout<<c.GetData()<<endl;cout<<c.A::GetData()<<endl;return ;}
这个程序的运行结果是10 10
稍微又在前面的程序基础上修改了一下:
#include "stdafx.h"#include <iostream>using namespace std;class A{protected:int m_data;public:int A_data;public :A(int data = 0){m_data = 0;}int GetData(){return doGetData();}virtualint doGetData(){return m_data;}};class B :public A{protected: int m_data;public:B(int data=2){m_data = data;}virtualint doGetData(){return m_data;}};class C:public B{protected:int m_data;public:C(int data=2){m_data = data;}int doGetData(){return m_data;}};void main( ){C c(10);cout<<c.GetData()<<endl;cout<<c.A::GetData()<<endl;return ;}////int _tmain(int argc, _TCHAR* argv[])//{//Base a(2);//Derived b(3,4);//a.print();//b.print();//b.Base::print();////return 0;//}
答案是2 2
纯虚函数:
再加一点对纯虚函数的理解,今天和同学在讨论,终于明白为什么需要纯虚函数了:在各种封装中,可以把基类的头文件给用户看,用户知道有哪些成员函数可以调用,这些函数都是写作纯虚函数,接着,在派生类中将这些成员函数全部实现,但是这个是用户看不到的,用户知道有这些派生类可以调用,然后有哪些成员函数,就可以了。这样就保证了类的封装性。
在纯虚函数的使用中需要注意的是,如果纯虚函数在派生类中没有全部实现并被覆盖,那么,派生类也还是一个抽象类。
0 0
- C++继承的一点理解
- 对C++继承的一点理解
- Java构造方法继承的一点理解
- C++:简单的继承理解
- c++继承和多态的一点小小的理解
- 对于C++保护继承方式的一点理解
- Day3对继承和对象的一点理解
- 关于call ,this,继承,记录一点自己的初步理解
- 对C++IO库的一点理解
- 4.c++-对C++多态性的一点理解
- 一点对C语言中跳过scanf语句的理解
- c语言温习-关于冒泡排序的一点理解
- virtual 函数的public继承的 的一点问题及理解
- Ajax的一点理解
- Cygwin的一点理解
- UIWebView 的一点理解
- MEF的一点理解
- QThread的一点理解
- @Target Annotation的使用
- Python提供的基本数据类型
- 李开复:谷歌靠云计算成就最好搜索引擎
- 使用codeblocks(WINDOWS7下)编写WIN32 GUI应用程序时一些注意事项
- 轩辕IT培训 Linux C++ 远程全科班 Boost_ACE
- C++继承的一点理解
- hdu1325is it a tree?&&poj1308 is it a tree?(并查集)
- Python链表部分函数用法(1)
- HDU 4738 Caocao's Bridges
- thinkphp调用存储过程返回结果集
- @Retention
- velocity基本语法--官方文档翻译
- Qt中 QString 和int, char等的“相互”转换
- ImportError: No module named gyp