标签: 面向对象

7 篇文章

动态多态原理浅析(C++)
前言 多态主要分为两类: 静态多态:地址早绑定,即编译阶段确定函数地址,例如函数重载、运算符重载 动态多态:地址晚绑定,即运行阶段确定函数地址 动态多态 使用条件 父类指针或引用指向子类对象 基础语法 引入一段代码示例: #include<iostream> using namespace std; class Animal { pub…
虚析构与纯虚析构(C++)
纯虚函数和抽象类 概念 首先引入“纯虚函数”和“抽象类”的概念,示例代码如下 #include<iostream> using namespace std; class Base //抽象类 { public: virtual void func() = 0; //纯虚函数 }; class Son1:public Base { pub…
菱形继承问题及解决方法—虚继承与虚基类(C++)
菱形继承 菱形继承的概念 两个派生类继承同一个基类,又有某个类同时继承着这两个派生类 菱形继承典型案例 这种继承带来的问题主要有两方面: 羊和驼都继承了动物的类成员,当羊驼想要使用时,会产生二义性 羊驼实际继承了两份来自动物的数据,但实际只需要一份 想要解决有两个思路,一是给羊驼的每一份数据加上作用域,但本质上羊驼还是继承了两份数据。二是通过虚继承…
类外实现成员函数的好处(C++)
报错代码 事情是这样的,在学友元时,自己跟着教程的思路写了一段代码 #include<iostream> #include<string> using namespace std; class JieGay; class MyHouse { //成员函数做友元 friend void JieGay::visit(); pub…
内存对齐(C++)
内存对齐的概念 引入代码 众所周知,C++的空类占用1个字节的内存空间,非空类占用的空间与类内的成员有关。 但类中成员所占内存并不是连续的,拿以下代码举例: #include<iostream> using namespace std; class test1 { char c1; int a; char c2; }t1; class …
对象成员与本类的构造与析构顺序(C++)
定义 当一个类中的成员作为另一个类的对象,称该成员为对象成员 例如: class A{} class B { A a; } B类中有对象A作为成员,A为对象成员 验证 示例代码: #include<iostream> #include<string> using namespace std; //手机类 class Phon…
深拷贝与浅拷贝(C++)
区别 浅拷贝:简单的赋值拷贝 深拷贝:在堆区申请新的空间进行拷贝 示例 为方便理解,引入一段错误代码 #include <iostream> #include <cstring> using namespace std; class Person { public: Person() { cout << &quo…