C++面向对象编程(概念)
来源:互联网 发布:金山打字通mac版 编辑:程序博客网 时间:2024/06/03 21:24
转载
C++面向对象编程
1,访问属性
区分内部可见(成员函数对数据成员的访问)和外部可见(对象对成员的访问)
1)public:内部和外部皆可见
2)private:内部可见,外部不可见
3)protected:内部可见,继承类的内部可见,外部不可见
继承属性:
public类型的继承:在子类中,原来public,protected,private等依旧为public,protected,private
protect类型的继承:在子类中,原来public,protected,private等变为protected,protected,不可见
private类型的继承:在子类中,原来public,protected,private等变为private,private,不可见
结合访问属性和继承属性,就可以推导处各种情况下的访问权限问题。其中private只能在父类内部调用,对于其他都是不可见的。
2,继承的二义性
1)一个指向基类的指针可以指向该类的任何派生类对象,这是c++实现多态的关键
2)可以把基类的指针/引用强制转换为派生类的指针/引用,这再java里面是不容许的,但再c++里面,利用该指针再调用子类具有,基类没有的属性的时候,居然不报错,实在很神奇。
3,虚函数与多态
c++中的虚函数可以被对象正常调用,纯虚函数才类似于java里的抽象函数。一旦基类声明虚函数,那么不管子类有没有virtual,都为虚函数。
多态是指同一个操作作用于不同的对象会产生不同的相应,分为静态多态和动态多态。
静态多态发生在编译阶段,如函数重载。(通过不同对象调用对应函数本质上不叫多态)
动态多态发生在运行阶段,通过虚函数和指针/引用来实现。
(使用指针访问非虚函数时候,编译器根据指针本身类型决定调用哪个函数;使用指针访问虚函数的时候,编译器根据指针指向的对象类型决定调用哪个函数)。因此:实现动态多态需要满足两个条件:
1)成员函数声明为虚函数
2)使用指向基类类型的指针或者引用进行函数调用
4,c++类的内存布局
1)对于一个类来说,类里面的static数据成员存放在所有对象之外,非static成员被配置到每个对象。不会对对象占用的内存造成影响。
2)类里面的成员函数也放置在所有对象之外,如果类包含虚函数,那么编译系统给每一个对象一个虚函数指针(ptr),指向每个对象自己的虚函数表。虚函数表中记载的是对应需要调用函数的入口地址。
- 面向对象编程(概念)
- 面向对象编程概念
- C++面向对象编程(概念)
- 面向对象概念理解(C#)
- CH05C#面向对象编程概念
- 面向对象编程概念理解
- 面向对象、过程编程概念
- Java 面向对象编程概念
- 面向对象编程的概念
- 面向对象编程常见概念
- 面向对象编程的概念
- 面向对象编程的概念
- 第五章 面向对象的编程风格(面向对象编程概念)
- C语言面向对象编程(四):面向接口编程
- C语言面向对象编程(四):面向接口编程
- C语言面向对象编程(四):面向接口编程
- C++编程思想学习-随笔记录(面向对象概念)
- Objective C 面向对象编程(二)
- hbase bulk load 小实践及一些总结
- java发送email Demo
- css设置背景图片
- SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoade
- java字符串表示/
- C++面向对象编程(概念)
- /ThinkPHP/Library/Think/Storage/Driver/File.class.php LINE: 48
- 暑假写题第一天
- Apriori 算法关联分析
- 深机笔记
- 处理java中内存溢出
- 如何准备BAT技术面试答案(中)——Java研发方向
- AE 制作一个简单的动画
- STL库容器vector front函数&back函数