C++
文章平均质量分 81
关于C++
_lishuang
这个作者很懒,什么都没留下…
展开
-
类的静态成员,const成员,内联函数和运算符重载
静态成员:声明为static的类成员(成员数据或成员函数)称为类的静态成员特性:(1)静态成员为所有类所共享,不属于某个具体的实例(2)类的静态成员在类内声明,不分配空间,必须在类外定义,定义时不添加static关键字(3)类的静态成员函数没有默认的this指针,在它里面不能使用非静态数据成员注意:静态成员函数的默认调用约定为__cdecl默认调用约定静态成员函数不可以调用非静态成员函数,非静态成...原创 2018-06-21 17:03:15 · 257 阅读 · 0 评论 -
【C++】多态(二)---------多态的调用原理和带有虚函数的对象模型
环境:win10+vs2015为什么派生类对基类的虚函数进行重写后,通过基类对象的指针或引用来调用该虚函数,就可以实现多态呢?我们来探究一下多态的调用原理吧!1.多态的调用原理:如下代码:#include<string>class Base{public: virtual void TestFunc1() { cout << "Base::TestFunc1...原创 2018-07-06 13:01:24 · 301 阅读 · 0 评论 -
【C++】多态(一)
这篇博客简单介绍了多态的概念,分类,动态多态实现的条件,重写等几个方面,希望能够加深对于多态的理解。1.概念多态:指的是同一个事物的多种表现形态2.多态的分类分为:1)静态多态:编译器在编译期间来确定程序的行为(确定具体调用哪个函数) a)函数重载 b)泛型编程2)动态多态:在程序运行时,根据基类的指针(引用)指向的对象来确定调用哪个类的虚函数3.代码实现一个多态...原创 2018-07-06 11:08:52 · 170 阅读 · 0 评论 -
继承与继承体系中派生类的对象模型
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。继承格式继承权限和访问限定符继承权限和访问限定符继承方式基类public成员基类protected成员基类private成员继承引起的访问控制关系变化概述public继承仍为public成员仍为protected成员不可见基类的非私有成员在子类的访问属性都不...原创 2018-07-04 14:51:41 · 263 阅读 · 0 评论 -
【C++】写时拷贝(copy on write)与引用计数
上一篇博客我们谈到了字符串的深拷贝与浅拷贝,在浅拷贝中,由于多个对象共用同一块内存空间,导致同一块空间被释放多次而出现问题,那能否保证:当多个对象共享一块空间时,该空间最终只释放一次呢?这就是我们今天要说的引用计数引用计数原理:当多个对象共享一块资源时,要保证该资源只释放一次, 只需记录有多少个对象在使用该资源即可,每减少(增加)一个对象使用, 给该计数减一(加一),当最后一个对象不使用时,该...原创 2018-07-04 10:14:34 · 572 阅读 · 0 评论 -
C++中字符串的深拷贝与浅拷贝
在C++中,字符串是用String类型定义的,字符串拷贝分为浅拷贝(位拷贝)和深拷贝两种,下面给出了深拷贝的两种不同的实现方式(普通版和简洁版)浅拷贝首先什么是浅拷贝? 浅拷贝又称为位拷贝,编译器只是将对象中的值拷贝过来,如果对象中管理了资源,就会导致多个对象共享同一份资源,当释放时就会进行多次释放造成程序错误。class String{public: String(const cha...原创 2018-07-03 14:07:57 · 3616 阅读 · 0 评论 -
C++中动态内存管理,用malloc/free模拟实现new/new[],delete/delete[]
C++中动态内存管理的方式与C语言有所不同,在c++中通过new和delete运算符进行动态内存管理,通过深入剖析new/new[]和delete/delete[]来对c++的内存管理有更深入的了解C语言堆上使用malloc/calloc/realloc/free进行动态内存管理, malloc/calloc/realloc用来在堆上开辟空间,free将申请的空间释放掉面试题:mallo...原创 2018-06-30 19:37:23 · 917 阅读 · 0 评论 -
【C++】模拟实现日期类
本篇博客完善了日期类:实现了以下操作class Date { //构造函数//拷贝构造函数// 当前日期days天后是什么日期? Date operator+(int days); // 当前日期days天前是什么日期? Date operator-(int days); // 两个日期之间差了多少天? Date operator-(const Date& d); ...原创 2018-06-25 17:18:35 · 283 阅读 · 0 评论 -
初识C++--------------缺省参数,函数重载及引用
缺省参数:1)定义:C++相对于C语言来说,函数参数检测更加严格。缺省参数指的是在声明或者定义函数时为函数的参数指定一个默认值,在调用函数时,若没有指定实参就采用默认值,否则使用指定的实参,如下面的代码:void test(int a=10){ cout<<a<<endl;}int main(){ test();//输出10,没有传参时使用参数的默认值...原创 2018-06-09 23:23:08 · 244 阅读 · 0 评论 -
【C++】类的6个默认成员函数
介绍类的6个成员函数之前,我们先来看一下this指针this指针this 指针是成员函数里面的一个隐藏指针,指向了调用该函数的对象本身。this指针特性:(1)this指针的类型为:类类型* const(2)this指针并不是对象本身的一部分,不影响sizeof结果(3)this指针的作用域在类“成员函数”内部(4)this指针是”类成员函数”的第一个默认隐含参数,编译器自动维护传递,类编写者不能...原创 2018-06-14 19:00:08 · 1148 阅读 · 0 评论 -
【C++】多态(三)-------虚拟继承和菱形虚拟继承(带有虚函数)
1.菱形继承(带有虚函数)(1)派生类未增加新的虚函数class B{public: virtual void TestFunc1() { cout << "B::TestFunc1" << endl; } virtual void TestFunc2() { cout << "B::TestFunc2" << endl; }...原创 2018-07-07 13:23:24 · 295 阅读 · 0 评论