
C++
文章平均质量分 83
jelly_9
快速采集信息,高效整理,根据逻辑建立成一个系统。
展开
-
C++类的六个默认成员函数
类的六个默认成员函数: 1. 构造函数 2. 拷贝构造函数 3. 析构函数 4. 赋值运算符重载 5. 取址(&)运算符重载 6. const修饰的取址运算符重载我们先定义一个空类:class A{};在经过编译器处理之后它就不在为空,编译器会自动加入一些默认的成员函数,即使在这些函数中什么也不做。编译器处理之后的类相当于:class A{public: A(原创 2017-03-10 10:39:49 · 1663 阅读 · 1 评论 -
string类
class String{public: String():_str(new char[1]){*_str = '\0';} String(const char* s):_str(new char[strlen(s)+1]){strcpy(_str, s);} String(const String& s):_str(new char[strlen(s._str)+1])原创 2017-03-14 18:43:25 · 325 阅读 · 0 评论 -
菱形继承和虚拟继承
菱形继承继承是面向对象中实现复用的一个机制,通过继承定义的一个类,可以共享公共的东西,而各自实现本质不同的东西。 在单继承下,这种由继承机制支持的、特殊形式的按值组合提供了最有效、最紧凑的对象表示。在多继承下,当一个基类在派生类中多次出现时就会出现问题。最主要的一个例子是 iostream 类的层次结构模型。如下图:(图片来源:http://blog.youkuaiyun.com/lostspe...原创 2018-02-27 16:26:34 · 561 阅读 · 0 评论 -
C++ 引用
什么是引用引用是 C++ 对C语言的一个重要的扩充,引用就是给一个变量起一个别名,它并没有定义新的变量,对引用的操作与对变量直接操作完全一样,一个对象可以取多个别名,但一个引用只能作为一个对象的别名,即 一对多的关系(一个对象——多个别名)。引用的声明方法如下:int i = 10;int &ri = i;如上代码第一行定义了一个整形变量,而第二则定义了一个整形变量 ...原创 2018-02-17 23:12:01 · 412 阅读 · 0 评论 -
键值对pair
什么是 pairpair 类是C++标准库的一部分,它使得我们可以在一个对象的内部把相同类型或不同类型的两个值关联起来,它被包含在头文件 unility 中:pair类的结构大致如下:template<class T1, class T2>class pair{public: pair(T1 v1, T2 v2) :first(v1) ,s...原创 2018-02-18 01:01:41 · 746 阅读 · 0 评论 -
友元、内联和宏
友元采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的成员函数,但又需要频繁地访问类的私有数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏...原创 2018-02-18 16:54:44 · 249 阅读 · 0 评论 -
指针和引用对比
指针和const指针C++中对于对象的定义是:一块能存储数据并具有类型的空间,对于对象a,它既有内容(存储的值是什么),也有地址(存储值的那块空间的地址编号&a)。程序在运行时,计算机会为其分配存储空间来存储值,我们既可以通过对象名来访问对象的值,也可以通过对象的地址来访问对象的值。存储地址的数据类型叫做指针,我们所谓通过对象地址来访问值,也就是通过指针变量来访问值。指针p也是对象...原创 2018-02-24 13:28:00 · 346 阅读 · 0 评论 -
虚函数与虚表指针
多态(polymorphism)是C++语言的一大特性,该词最早出自于希腊语,意为多种状态,而C++中的多态是实现接口复用的一种手段,即在保证接口不变的情况下,根据作用对象的不同而产生不同的运行结果—。C++中实现多态有两个必要的条件: 派生类重写基类的虚函数; 基类的指针或引用指向派生类的对象。 对于第二点很好理解,而第一点中“重写虚函数是什么意思呢?”,...原创 2018-03-05 13:15:07 · 677 阅读 · 0 评论