摘要:
多态的实现原理分析 当类里有一个函数被声明成虚函数后,创建这个类的对象的时候,就会自动加入一个__vfptr的指针, __vfptr维护虚函数列表。如果有三个虚函数,则__vfptr指向的是第一个虚函数, __vfptr+1指向的是第二个虚函数,__vfptr+2指向的是第三个虚函数。 当子类覆盖了 阅读全文
摘要:
多态 1.多态用途 为了代码可以简单的重复使用,添加一个功能时,接口不需要修改。 阅读全文
摘要:
子类和父类的赋值兼容规则 1.同名隐藏(非常重要) 当子类的成员方法(show)和父类的成员方法(show)的名字相同的时候,父类的所有(show)方法,都不能用子类的对象来调用了,这种现象就是同名隐藏。 3. 虚函数 当用子类的对象/指针/引用去赋值给父类时,如果子类和父类都有同名方法show,当 阅读全文
摘要:
重载new,delete运算符 new,delete在c++中也被归为运算符,所以可以重载它们。 new的行为: 先开辟内存空间 再调用类的构造函数 开辟内存空间的部分,可以被重载。 delete的行为: 先调用类的析构函数 再释放内存空间 释放内存空间的部分,可以被重载。 为什么要要重载它们? 有 阅读全文
摘要:
new delete初探 1,new有2个作用 开辟内存空间。 调用构造函数。 2,delete也有2个作用 释放内存空间 调用析构函数。 如果用new开辟一个类的对象的数组,这个类里必须有默认(没有参数的构造函数,或者有默认值的参数的构造函数)的构造函数。 释放数组时,必须加[]。delete [ 阅读全文
摘要:
类模板 1,模板类里的函数都是模板函数 2,模板类里的函数,在类外面实现的时候,要用模板函数(方法:push_back)的方式实现,在类内部实现时,不需要用模板函数(方法:show)方式实现。 3,用模板类实现单链表,类List是类ListNode的友元类;用友元函数重载了类Value的 using 阅读全文
摘要:
函数模板初探 1,由来:有时候,函数的逻辑是一样的,只是参数的类型不同,比如下面 2,解决办法,如果参数的类型也可以作为函数的参数,就可以解决了 3,函数模板写法:template\ 4,函数模板的效率不高,编译器在编译的时候,会根据调用测提供的参数去推导出T1等的类型,并给我们生成对应类型的方法。 阅读全文
摘要:
const this指针 方法列表后面的const是什么含义呢? 答案:不可以在方法里修改成员变量 注意点: 非const方法里调用const方法是可以的 const方法里调用const方法是可以的 const方法里调用非const方法是 不可以的。 原因: this指针。 因为非const方法里的 阅读全文
摘要:
static关键字 1,static 成员变量 static 成员变量不随着对象的创建而开辟内存空间。也就是说,不管从哪个对象去看static成员变量,都是一样的。 2, static 成员方法 static 成员方法里不可以调用非static 成员方法。 非static 成员方法里可以调用stat 阅读全文
摘要:
友元的简单应用 1,对象 + 对象,或者,对象 + 数字,可以用类的成员函数去重载+号函数,但是,数字 + 对象就不能用类的成员函数去重载+号函数了, 因为编译器会把数字 + 对象翻译成数字.operator+(const 类 &对象),因为数字不是类的对象,无法传递给类的成员函数this指针。 用 阅读全文