C++
文章平均质量分 76
陈小默cxm
这个作者很懒,什么都没留下…
展开
-
C++:友元
C++:友元标签(空格分隔): c++C友元友元类友元成员函数共同的友元 类并非只能拥有友元函数,也可以将类作为友元。在这种情况下,友元类的所有方法都可以访问原始类的私有成员和保护成员。另外,也可以做更严格的限制,只有将特定成员函数指定为另一个类的友元。1友元类这里我们以遥控器与电视机的关系为例,电视机与遥控器有关系,但是其关系不是继承的is-a关系,同样也不可能是包含has-a关系。所以原创 2016-09-09 16:46:56 · 397 阅读 · 0 评论 -
C++:在构造函数中使用new时应该注意的事项
C++:在构造函数中使用new时应该注意的事项标签(空格分隔): c++如果在构造函数中使用了new初始化指针对象,那么应该在析构函数中使用delete释放对象。new和delete必须相互兼容,new对应于delete,new[]对应于delete[]。如果有多个构造函数,则必须以相同的方式使用new。然而,可以在一个构造函数中使用new初始化指针,而在另一个构造函数中将其初始化为空(0、N原创 2016-09-06 16:15:34 · 6186 阅读 · 1 评论 -
C++:返回对象
C++:返回对象标签(空格分隔): c++ 作者:陈小默C返回对象返回指向const的指针返回指向非const对象的引用返回对象返回const对象返回指向const的指针使用const引用的常见原因在于提高效率。 方式1Vector Max(const Vector &v1,const Vector &v2){ if(v1.length>v2.length) r原创 2016-09-06 17:11:57 · 1106 阅读 · 0 评论 -
C++:类继承
C++:类继承标签(空格分隔): c++C类继承定义一个基类派生一个类如何声明一个继承继承中应该添加什么派生类的构造函数使用派生类派生类和基类之间的特殊关系定义一个基类从一个类派生出另外一个类的时候,原始类被称为基类,继承类被称为派生类。为说明继承关系,首先需要定义一个基类。一下定义一个乒乓球会会员。#ifndef primer_table_tennis_player_h#defi原创 2016-09-07 10:21:21 · 426 阅读 · 0 评论 -
C++:静态联编和动态联编
C++:静态联编和动态联编标签(空格分隔): c++C静态联编和动态联编指针和引用类型的兼容性虚拟成员和动态编联为什么C中默认的编联方式是静态编联动态编联如何工作注意事项友元没有重定义重新定义将隐藏方法总结 在程序中如何确定应该调用哪一个函数呢?在C++中,将源代码中的函数调用解释为执行特定的函数代码块被称为函数名联编(binding)。在编译过程中进行的联编被称作静态联编(st原创 2016-09-07 16:00:53 · 1511 阅读 · 0 评论 -
C++:类设计要素
C++:类设计要素标签(空格分隔): c++C类设计要素编译器生成的成员函数1默认构造函数2复制构造函数3赋值运算符其他类方法1构造函数2析构函数3转换4按值传递对象与传递引用5返回对象和返回引用5使用const类函数总结 本节的内容是复习并拓展前面的讨论,已介绍这些原则。1编译器生成的成员函数1,默认构造函数默认构造函数要么没有参数,要么全部的参数都有默认值。如果没有定义任原创 2016-09-08 09:23:35 · 1700 阅读 · 0 评论 -
C++:私有继承
C++:私有继承标签(空格分隔): c++C私有继承私有继承初始化基类组件访问基类方法访问基类对象访问基类友元函数应该使用包含还是继承保护继承重新定义访问权限各种继承方式的比较 公有继承是一种is-a的关系,而包含是一种has-a的关系。使用公有继承,基类的公有方法将成为派生类的公有方法。总之,派生类将继承基类的接口,这是is-a关系的一部分。然而C++中提供了另外一种实现has原创 2016-09-08 10:49:45 · 7729 阅读 · 0 评论 -
C++:虚基类
C++:虚基类标签(空格分隔): c++C虚基类声明虚基类新的构造函数规则方法的二义性1使用作用域解析符2在子类重定义方法3设置保护性继承对于混合使用虚基类和非虚基类假如B和C都继承自A而D继承自B和C,那么D对象中包含几个A对象呢?1声明虚基类虚基类使得从多个类派生出的对象只继承一个基类对象:class Singer : virtual public Worker{...};cl原创 2016-09-08 14:41:09 · 619 阅读 · 0 评论 -
C++:对象数组与this指针
C++:对象数组与this指针标签(空格分隔): c++ 作者:陈小默C对象数组与this指针声明对象数组this指针代码示例声明对象数组由于在C++中我们可以直接操作堆和栈,所以在声明时我们也需要选择数组的创建方式。有一种最显而易见的方法去判断变量的存储状态,就是看对象创建时有没有用new关键字。 1,栈数组栈对象 顾名思义就是数组和对象都在当前栈中分配,带来的好处就是对象数组的生命原创 2016-09-03 11:21:07 · 960 阅读 · 0 评论 -
C++:特殊成员函数
C++:特殊成员函数标签(空格分隔): c++ 作者:陈小默C特殊成员函数默认构造函数默认析构函数复制构造函数何时调用复制构造函数默认复制构造函数的功能赋值运算符地址运算符C++中自动提供了下列五种成员函数默认构造函数,如果没有定义构造函数;默认析构函数,如果没有定义;复制构造函数,如果没有定义;赋值运算符,如果没有定义;地址运算符,如果没有定义;默认构造函数如果我们没原创 2016-09-06 15:38:37 · 671 阅读 · 0 评论 -
C++:类的自动转换和强制类型转换
C++:类的自动转换和强制类型转换标签(空格分隔): c++ 作者:陈小默C类的自动转换和强制类型转换C如何处理内置类型转换构造函数的自动转换自动转换的条件自动类型转换的流程使用explicit关键字关闭隐式类型转换自动参数匹配与二义性转换函数定义转换函数自动应用类型转换与二义性避免使用隐式类型转换C++如何处理内置类型转换C++为内置的基本数据类型提供了自动的转换方式,即使原创 2016-09-06 13:05:05 · 6947 阅读 · 0 评论 -
C++:运算符重载
C++:运算符重载标签(空格分隔): c++ 作者:陈小默C运算符重载运算符重载规则自定义时间运算重载运算符的两种使用方式多个重载运算符的连续运算重载限制当我们学习C++的时候,一定接触过cout对象,你一定好奇过为什么左移运算符在这里就成了插入运算符了呢?所以这一节我们就来介绍一下吊炸天的C++运算符重载机制。运算符重载规则operatorOP(argument-list)重载运算符原创 2016-09-05 14:29:34 · 3117 阅读 · 1 评论 -
C++:友元函数
C++:友元标签(空格分隔): c++C友元什么是友元为什么需要友元如何创建友元函数重载运算符友元和成员什么是友元通常情况下,类的私有变量是不能够被外界直接访问的,但是在某些情况下我们需要在非成员的方法中使用这些私有变量,于是C++提供了一种新的语法机制叫做友元。为什么需要友元以运算符重载为例,我们在上一节创建了一个Time类的例子。里面重载了*运算符。于是我们可以采用这种形式来将时间扩原创 2016-09-05 16:48:10 · 555 阅读 · 0 评论 -
C++:RIIT
C++:RIIT标签(空格分隔): c++ no 作者:陈小默 RIIT是运行时类型识别(Runtime Type Identification)的简称。这是新添加到C++中的特性,因此各个厂商的机制通常不兼容——作为一个Java出身的程序猿我就想问C++存在的意义是什么?专门恶心程序猿的么?——因此其实现与厂商心情有关。RIIT原理RIIT的目的是个指针类型转换提供一个安全机制,其中最主要原创 2016-09-10 11:12:36 · 3156 阅读 · 3 评论 -
C++:类型转换运算符
C++:类型转换运算符标签(空格分隔): c++ noC++语言创始人BS同志不喜欢C语言中的类型转换方式,于是提出了自己的类型转换方式,于是他又定义四个关键字dynamic_cast;const_cast;static_cast;reinterpret_cast;dynamic_cast这个关键字我们在前面的RIIT一节中已经介绍过了,其目的是用来在类层次结构中安全的转换类型。该运算符语原创 2016-09-10 12:00:32 · 378 阅读 · 0 评论 -
C++11:复习新增功能
C++11:复习新增功能标签(空格分隔): c++C11复习新增功能新类型统一的初始化缩窄声明autodecltype返回引用类型模板别名nullptr作用域内枚举对类的修改显式转换运算符类内成员的初始化右值运算新类型C++11中新增的数据类型有long long和unsigned long long,以支持64位整型;新增了类型char16_t和char32_t,以支原创 2016-09-12 18:01:28 · 434 阅读 · 0 评论 -
C++中的类与对象
C++中的类与对象标签(空格分隔): c++ 作者:陈小默C中的类与对象定义类创建头文件类和结构体访问控制作用域解析运算符实现类成员默认的内联方法创建对象开发环境:Visual Studio 2010定义类通常,C++程序将接口(类定义)放在头文件中,并将实现(类方法的代码放在源代码文件中),本文章以一个学生的例子来完成代码。学生定义:记录三门课程(语文,英语,数学)的成绩,能原创 2016-09-02 11:23:12 · 7570 阅读 · 1 评论 -
C++:类的构造函数和析构函数
C++:类的构造函数和析构函数标签(空格分隔): c++ 作者:陈小默C类的构造函数和析构函数构造函数声明和定义引用参数与构造函数使用构造函数定义对象默认构造函数析构函数声明和定义析构函数的执行时机const成员函数实例演示开发环境:Visual Studio 2010构造函数当我们需要在对象创建时初始化一些数据的时候,我们不可能提供一个普通的成员方法供程序猿在对象创建后调原创 2016-09-02 17:05:56 · 20086 阅读 · 6 评论 -
C++:实现LinkedList 学习抽象数据类型
C++:实现LinkedList 学习抽象数据类型标签(空格分隔): c++ 数据结构 作者:陈小默C实现LinkedList 学习抽象数据类型定义需求作为类作为List作为栈stack作为队列定义模版定义数据结构声明类方法实现演示用作一般数据存储用作栈用作队列如果之前学习过java的话,一定接触过其中的ArrayList和LinkedList。当我们说起其中的区别时,原创 2016-09-04 17:36:18 · 9530 阅读 · 0 评论 -
C++:类作用域
C++:类作用域标签(空格分隔): c++C类作用域类成员的三种访问形式类作用域常量c11 作用域内枚举全局变量可以在文件的任意位置使用它,但是局部变量只能在其所属的代码块中使用。C++中引入了一种新的作用域,类作用域。作用域为类的名称在整个类中是已知的,在类外是不可见的。也就是说,作用域为类的成员只能被通过对象调用。类成员的三种访问形式使用类成员时,必须根据上下文使用直接成员运算符(.)、原创 2016-09-05 10:37:05 · 10625 阅读 · 0 评论 -
C++:多态公有继承
C++:多态公有继承标签(空格分隔): c++C多态公有继承派生类可以增加新成员派生类重写基类的方法重写方法声明virtual关键字基类声明virtual的析构函数为了需要虚拟析构函数 如果我们希望同一个方法在基类和派生类中的行为是不同的的时候,我们可以采取一种比较复杂的行为——多态。具有多态性质的对象的行为取决于调用对象,即同一个方法的行为随上下文而异。为了实现多态C++提供了两种重要原创 2016-09-07 11:43:51 · 885 阅读 · 0 评论