C++
drinkingcode
分享好玩科技,探索未知世界
展开
-
为什么C++中千万不要返回局部对象或变量的引用和指针
大家都知道一个常识:“C++中千万不要返回局部对象或变量的引用和指针”。 既然所有C++权威的书上都要求“一定不要返回局部对象或变量的引用和指针”,那为什么C++编译器不从语法上直接禁掉这种用法。如果只是建议的话,那么“返回局部对象或变量的引用和指针”是否有用武之地呢?(从理论上来讲,我认为这种做法似乎总是错误的,原因大家都知道。) 例1: class CComplex {转载 2015-10-10 10:54:29 · 3980 阅读 · 2 评论 -
C++ - 隐式类类型转换
1. C++语言定义了内置类型之间的几个自动转换。也可以定义如何将其他类型的对象隐式转换为我们的类类型,或将我们的类类型的对象隐式转换为其他类型。 2. 为了定义到类类型的隐式转换,需要定义合适的构造函数。 3. 可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。 4. 举例: 1 class Sales_item 2 { 3 public:转载 2015-11-24 14:59:16 · 704 阅读 · 0 评论 -
C++引用与指针的比较
C++引用与指针的比较转自:http://www.cnblogs.com/kingln/archive/2008/03/29/1129118.html 引用是C++中的概念,初学者容易把引用和指针混淆一起。 一下程序中,n是m的一个引用(reference),m是被引用物(referent)。 int m; int &n = m; n相当于m的别名(绰号),对n的任何操作就是对m的操作。 所以n既转载 2015-10-10 10:51:22 · 240 阅读 · 0 评论 -
C++中vector使用详细说明
1. 在C++中的详细说明 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。 vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象, 简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 2. 使用vector, 必须在你的头文件中包含下面的代码: #include原创 2015-10-10 10:51:15 · 342 阅读 · 0 评论 -
C++中的const成员函数(函数声明后加const,或称常量成员函数)用法详解
在C++的类定义里面,可以看到类似下面的定义: 可以看到,在GetLength和GetNodeInfo两个成员函数的参数列表后面出现了一个const。这个const指明了这个函数不会修改该类的任何成员数据的值,称为常量成员函数。 对于const函数的外部定义,也不能忘记书写const限定符,如下面给出GetLength函数(指返回链表转载 2015-10-10 10:51:44 · 1771 阅读 · 0 评论 -
C++中的static关键字的总结
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 1.面向过程设计中的static 1.1静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1 #inc转载 2015-10-10 10:51:47 · 251 阅读 · 0 评论 -
c++ try_catch throw
使用throw抛出异常 本人节选自《21天学通C++》一书 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为: throw 表达式; 如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理转载 2015-10-10 10:54:26 · 304 阅读 · 0 评论 -
C++的强制类型转化
1 reinterpret_cast reinterpret_cast 转换一个指针为其它类型的指针。它也允许从一个指针转换为整数类型。反之亦然。(译注:是指针具体的地址值作为整数值?) 这个操作符能够在非相关的类型之间转换。操作结果只是简单的从一个指针到别的指针的值的二进制拷贝。在类型之间指向的内容不做任何类型的检查和转换。如果情况是从一个指针到整型的拷贝,内容的解释是系统相关的,所以任转载 2015-10-10 10:51:30 · 378 阅读 · 0 评论 -
Linux下C++的man安装及使用方法
1. 安装C++的帮助手册 一般的Linux发行版不会默认安装C++的帮助手册,安装方法如下: 点击这里 (ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen//)站点, 或者其他的可用站点,我下载文件的是libstdc++-api.20130310.man.tar.bz2,当然,您或者可下载其他版本。 解压方式:tar j转载 2015-10-10 10:51:11 · 372 阅读 · 0 评论 -
容器适配器
首先,我们要明白适配器是干什么的?其实就是一个接口转换装置,是得我们能用特定的方法去操作一些我们本来无法操作的东西。举一个例子,比如你的一个设备支持串口线,而你的电脑支持的是usb口,这时候,我们没有必要重新买一个支持usb的设备,只需要一根串口转usb口的小玩意,让你的设备能够连接到usb插口上,而它就是适配器。 那么C++中的容器适配器是干什么的呢?可以做一个类比,我们已有转载 2015-10-10 10:51:41 · 304 阅读 · 0 评论 -
C++中的操作符重载
一、什么是操作符重载 操作符重载可以分为两部分:“操作符”和“重载”。说到重载想必都不陌生了吧,这是一种编译时多态,重载实际上可以分为函数重载和操作符重载。运算符重载和函数重载的不同之处在于操作符重载重载的一定是操作符。我们不妨先直观的看一下所谓的操作符重载: 我们看到操作符“+”完成float和int两种类型的加法计算,这就是操作符重载了。这些内置类型的操作符重载已经实现转载 2015-10-10 10:51:49 · 487 阅读 · 0 评论 -
C++中的虚函数
本文针对C++里的虚函数,虚继承表现和原理进行一些简单分析,有不对的地方请指出。下面都是以VC2008编译器对这两种机制内部实现为例。 虚函数 一下是百度百科对于虚函数的解释: 定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数[1] 语法:virtual 函数返回类型 函数名(参数表) { 函转载 2015-10-10 10:51:52 · 258 阅读 · 0 评论 -
虚继承与虚基类的本质
虚继承和虚基类的定义是非常的简单的,同时也是非常容易判断一个继承是否是虚继承 的,虽然这两个概念的定义是非常的简单明确的,但是在C++语言中虚继承作为一个比较生 僻的但是又是绝对必要的组成部份而存在着,并且其行为和模型均表现出和一般的继承体系 之间的巨大的差异(包括访问性能上的差异),现在我们就来彻底的从语言、模型、性能和 应用等多个方面对虚继承和虚基类进行研究。 首先还是先给出转载 2015-10-10 10:51:55 · 289 阅读 · 0 评论 -
C++_友元函数
1、为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数 优点:能够提高效率,表达简单、清晰 缺点:友元函数破环了封装机制,尽量不使用成员函数,除非不得已转载 2015-10-10 10:54:37 · 376 阅读 · 0 评论 -
C++中关于命名空间
在C++中有一种很方便的结构,那就是namespce.尽管namespace std;违背了命名空间起初的原则,但是不可否认它确实为我们带来了很多的方便. 当然,我们可以自定义一个namespace,如何声明和调用它呢? 通过例子来帮助我们理解这些概念. 如: #ifndef NAME_H#define NAME_H#pragma once #includeusing namespa转载 2015-10-10 10:54:17 · 339 阅读 · 0 评论 -
【C/C++】C++中类访问权限控制
第一:private, public, protected 访问标号的访问范围,在没有继承的情况下: private: 只能由 1.该类中的函数、2.其友元函数访问。 不能被任何其他访问,该类的对象也不能访问。 protected: 可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。转载 2015-10-10 10:54:20 · 989 阅读 · 0 评论 -
C++中inline函数
(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline,即可以把函数指定为内联函数。 inline int min(int first, int second) { ....... } i转载 2015-10-10 10:54:31 · 404 阅读 · 0 评论