C++面向对象
C++面向对象编程,包括类的写法
jfhe_9954
这个作者很懒,什么都没留下…
展开
-
继承方式
C++继承方式继承定义继承就是不修改原有的类,直接利用原来的类的属性和方法并进行扩展。原来的类称为基类,继承的类称为派生类,他们的关系就像父子一样,所以又叫父类和子类。一般格式如下:class 派生类名 : 继承类型 基类名三种继承方式继承类型有三种,共有继承(public),私有继承(private)和保护继承(protected)。共有继承的特点是基类成员在派生类中都保持原来的状态私有继承的特点是基类中所有成员在派生类中都变为私有成员保护继承:基类中的public变为protect转载 2021-04-26 01:38:51 · 131 阅读 · 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 · 397 阅读 · 0 评论 -
构造函数、析构函数与虚函数
构造函数不能为虚函数。虚函数的实现是通过虚表(vtable)管理被重写了的函数,通过虚表指针(vptr)指向虚表。虚表指针是与对象相联系的,只有创建了对象,才产生虚表指针。虚表指针位于对象的第一个指针长度的位置,它会根据实际情况指向对象类型对应的虚表。构造函数调用结束之前,对象还未产生,此时的对象是不完整的,虚表指针未必生成,多态机制无法使用,因此不能在构造函数结束之前调用虚函数。基类的析构函数要写成虚函数基类的析构函数不要写成虚函数时,使用父类指针delete,会调用不到基类的析构函数,基类内存原创 2021-04-13 13:08:24 · 241 阅读 · 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 · 387 阅读 · 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 · 106 阅读 · 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 · 291 阅读 · 0 评论