C++面向对象
C++面向对象编程,包括类的写法
jfhe_9954
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
继承方式
C++继承方式 继承定义 继承就是不修改原有的类,直接利用原来的类的属性和方法并进行扩展。原来的类称为基类,继承的类称为派生类,他们的关系就像父子一样,所以又叫父类和子类。 一般格式如下: class 派生类名 : 继承类型 基类名 三种继承方式 继承类型有三种,共有继承(public),私有继承(private)和保护继承(protected)。 共有继承的特点是基类成员在派生类中都保持原来的状态 私有继承的特点是基类中所有成员在派生类中都变为私有成员 保护继承: 基类中的public变为protect转载 2021-04-26 01:38:51 · 184 阅读 · 0 评论 -
构造函数与析构函数
类内有两种特殊的函数(当然也要6种的说法,其中5种是构造函数),称为构造函数和析构函数,下面写了两个类来了解一下普通构造函数与析构函数。 代码地址:http://cpp.sh/27lkt #include <iostream> using namespace std; class A { public: A(int _m) : m(_m) { cout << "general construct A" << endl; } ~A() { cout &l原创 2021-04-26 00:25:28 · 454 阅读 · 0 评论 -
构造函数、析构函数与虚函数
构造函数不能为虚函数。 虚函数的实现是通过虚表(vtable)管理被重写了的函数,通过虚表指针(vptr)指向虚表。 虚表指针是与对象相联系的,只有创建了对象,才产生虚表指针。虚表指针位于对象的第一个指针长度的位置,它会根据实际情况指向对象类型对应的虚表。 构造函数调用结束之前,对象还未产生,此时的对象是不完整的,虚表指针未必生成,多态机制无法使用,因此不能在构造函数结束之前调用虚函数。 基类的析构函数要写成虚函数 基类的析构函数不要写成虚函数时,使用父类指针delete,会调用不到基类的析构函数,基类内存原创 2021-04-13 13:08:24 · 289 阅读 · 0 评论 -
虚表指针
当一个类A实现了多态的时候,与不使用多态机制的写法相比会多出一个sizeof(void*)的长度,多出的这个长度就是虚表指针,在对象中,虚表指针位于对象地址的起始位置。 class Base { public: int a; int b; virtual void func() {} }; class Dred : public Base { public: int a; int b; void func() {} }; int main() {原创 2021-04-13 12:52:52 · 446 阅读 · 0 评论 -
对象作为参数传递(1)
类的对象作为参数进行值传递时将会调用构造函数 看下列代码 #include <iostream> using namespace std; class A { public: A() {cout << "general construct A" << endl;} A(A& a) {cout << "copy construct A" << endl;} ~A() {cout << "destruct原创 2021-04-12 01:59:38 · 160 阅读 · 0 评论 -
对象作为参数传递(2)
当子类重写父类的方法时,参数为类时,通过值传递和地址传递将会出现不一样的结果。 #include <iostream> using namespace std; class A { public: A() {} ~A() {} virtual void fun1() {cout << "A fun 1 call" << endl;} void fun2() {cout << "A fun 2 call" << e原创 2021-04-12 01:48:32 · 472 阅读 · 0 评论
分享