摘要:
struct/class/union内存对齐原则有四个: 1).数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开 阅读全文
摘要:
先看一下虚函数: class Base { public: virtual void Funtest1(int i) { cout << "Base::Funtest1()" << endl; } virtual void Funtest2(int i) { cout << "Base::Funte 阅读全文
摘要:
1.当基类和派生类中都没有虚析构函数时 #include<iostream> using namespace std; class Base{ public: Base() { cout<<"调用Base类的构造函数Base()"<<endl; } ~Base() { cout<<"调用Base类的 阅读全文
摘要:
1,在 C++ 语言中,并不直接支持面向对象中的抽象类和接口概念,但是 C++ 语言 却可以间接实现这些概念; 2,什么是抽象类: 1,面向对象中的抽象(其实就是分类)概念: 1,在进行面向对象分析时,会发现一些抽象的概念,如图形的面积如何计算? 2,图形类: 1,图形的面积是不能计算的,肯定要问是 阅读全文
摘要:
1,本节课讲述单例类模式,实现并抽取相关代码实现单例类模板,在以后开发工作 中,如果想要使用单例模式,那么直接使用今天开发的单例类模板就可以; 2,需求的提出: 1,在架构设计时,某些类在整个系统生命期中最多只能有一个对象存在 ( Single Instance ); 1,如超市收银系统,由外观来说 阅读全文
摘要:
1,C++ 中继承是非常重要的一个特性,本节课研究在继承的情形下,C++ 的对象模 型又有什么不同; 2,继承对象模型(最简单的情况下): 1,在 C++ 编译器的内部类可以理解为结构体; 2,子类是由父类成员叠加子类新成员得到的; 1,代码示例: 1 class Derived : public 阅读全文
摘要:
1,关于赋值的疑问: 1,什么时候需要重载赋值操作符? 2,编译器是否提供默认的赋值操作符? 2,关于赋值的疑问: 1,编译器为每个类默认重载了赋值操作符; 1,意味着同类型的类对象可以相互赋值; 2,默认的赋值操作符仅完成浅拷贝; 3,当需要进行深拷贝时必须重载赋值操作符; 1,和拷贝构造函数相同 阅读全文
摘要:
C++多态性: 1. 定义: “一个接口,多种方法”,程序在运行时才决定调用的函数。 2. 实现: C++多态性主要是通过虚函数实现的,虚函数允许子类重写override(注意和overload的区别,overload是重载,是允许同名函数的表现,这些函数参数列表/类型不同)。 *多态与非多态的实质 阅读全文