
C++学习
文章平均质量分 51
wukunshe
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 异常安全
什么是异常安全的代码 一直以来,我对“异常安全”这个概念都不是太理解,今天查阅了一些资料,终于弄清楚了它的意思。 “异常安全”并不是说不能抛出异常,更不是说“非常安全的意思”,而是说即使在抛出异常的时候(如果有异常的话),程序回退的过程是干净的。 “异常安全”分为三个级别: 1.基本级别:可能发生异常,但是彼时代码保证做了任何必要的转载 2014-06-02 10:40:23 · 970 阅读 · 0 评论 -
C++的函数重载
——每个现象后面都隐藏一个本质,关键在于我们是否去挖掘写在前面:函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题1、声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了)2、当转载 2014-10-22 16:51:52 · 266 阅读 · 0 评论 -
C++ 中extern 的用法
前段时间看了extern 的用法,今天试了一下出现了如下问题,我在一个头文件1中定义了全局常量,然后在头文件2中定义了同样的全局变量,然后把两个头文件包含在另外一个cpp里面出现了了重新定义的错误,去掉头文件2中的全局定义,undeclared identifier 的错误。最后把2中的所有全局变量加上了extern,结果出现undeclared indentifier错误,后经过查找在头文件2中转载 2014-10-22 18:04:32 · 944 阅读 · 0 评论 -
error LNK2001
c++ 无法解析的外部符号 1>p.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall原创 2014-10-20 15:08:46 · 411 阅读 · 0 评论 -
C++设计模式-Builder建造者模式
作用:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式和AbstractFactory模式在功能上很相似,因为都是用来创建大的复杂的对象,它们的区别是:Builder模式强调的是一步步创建对象,并通过相同的创建过程可以获得不同的结果对象,一般来说Builder模式中对象不是直接返回的。而在AbstractFactory模式中对象是直接返回的,Ab转载 2014-10-20 15:25:35 · 412 阅读 · 0 评论 -
c++ 中Vector的用法
在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout(5)使用迭代器访问元素.vectorint>::iterator it;for(it=ve转载 2014-10-22 14:27:26 · 765 阅读 · 0 评论 -
STL 中的map讲解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有转载 2015-04-23 14:28:17 · 325 阅读 · 0 评论 -
C++四种强制类型转换的总结
C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。 reinterpreter_cast,仅仅重新解释类型,但没有进行转载 2015-04-23 14:45:58 · 360 阅读 · 0 评论 -
虚函数与多态
多态多态的这个概念稍微有点模糊,如果想在一开始就想用清晰用语言描述它,让读者能够明白,似乎不太现实,所以我们先看如下代码://例程1 #include iostream> using namespace std; class Vehicle { public: Vehicle(float speed,int tota转载 2015-05-19 11:13:37 · 410 阅读 · 0 评论 -
C++编译器与链接器工作原理
这里并没不是讨论大学课程中所学的《编译原理》,只是写一些我自己对C++编译器及链接器的工作原理的理解和看法吧,以我的水平,还达不到讲解编译原理(这个很复杂,大学时几乎没学明白)。要明白的几个概念: 1、编译:编译器对源文件进行编译,就是把源文件中的文本形式存在的源代码翻译成机器语言形式的目标文件的过程,在这个过程中,编译器会进行一系列的语法检查。如果编译通过,就会把对应的CP转载 2015-12-24 16:21:48 · 358 阅读 · 0 评论 -
C++ inline 内联函数
内联函数:(1) 内联函数定义和作用:将一个函数声明为inline,那么函数就成为内联函数。内联函数通常就是它在程序中每个调用点上“内联地”展开。从定义上看,内联函数跟一般函数不一样,一般函数调用的时候是需要调用开销的(比如出栈入栈等操作),内联函数从定义上看更像是宏,但是跟宏不一样。内联函数的作用主要就是使用在一些短小而使用非常频繁的函数中,为了减少函数调用的开销,为了避转载 2014-10-22 16:41:38 · 465 阅读 · 0 评论 -
C++默认参数
函数的默认参数值,即在定义参数的时候同时给它一个初始值。在调用函数的时候,我们可以省略含有默认值的参数。也就是说,如果用户指定了参数值,则使用用户指定的值,否则使用默认参数的值。转载 2014-10-22 16:26:14 · 367 阅读 · 0 评论 -
c/c++ 引用和指针
1:引用的和指针在概念上的区别 (一)引用是变量的别名,例如 int m; int &n=m; 引用作为一个别名。它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。则任何对引用的操作即对变量的操作。 引用一般是用于处理函数的参数与返回值。原创 2014-10-22 15:39:52 · 398 阅读 · 0 评论 -
接口继承与实现继承
所谓接口继承,就是派生类只继承函数的接口,也就是声明;而实现继承,就是派生类同时继承函数的接口和实现。我们都很清楚C++中有几个基本的概念,虚函数、纯虚函数、非虚函数。虚函数:虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承类的版本。——MSDN虚函数用来表现基类和派生类的成员函数之间的一种转载 2014-06-05 18:44:40 · 395 阅读 · 0 评论 -
考虑Virtual函数以外的其他选择
假设你正在写一个视频游戏软件,游戏里有各种各样的人物,每个人物都有健康状态,而且不同的人物可能以不同的方式计算他们的健康指数.该如何设计游戏里的人物,主要如何提供一个返回人物健康指数的接口. 方法一,基于虚函数的方法. 在人物角色的基类增加一个成员函数heathValue,返回一个整数,表示人物的健康程度,并将声明为virtual.1 class GameCharact转载 2014-06-05 20:23:06 · 522 阅读 · 0 评论 -
明智而审慎的使用Private继承
C++如何将Public继承视为Is-a。Private继承并yi原创 2014-06-08 11:26:47 · 459 阅读 · 0 评论 -
C++的多重继承
C++的多重继承原创 2014-06-08 12:03:02 · 455 阅读 · 0 评论 -
RAII
RAII,也称为“资源获取就是初始化”,是c++等编程语言常用的管理资源、避免内存泄露的方法。它保证在任何情况下,使用对象时先构造对象,最后析构对象RAII简介编辑RAII[1](Resource Acquisition Is Initialization),也成为“资源获取就是初始化”,是C++语言的一种管理资源、避免泄漏的惯用法。C++标准保证任何情况下,已构造的对象最转载 2014-06-08 12:42:05 · 436 阅读 · 0 评论 -
你的类需要复制构造函数吗?
很多时候的daan原创 2014-06-11 23:26:29 · 391 阅读 · 0 评论 -
fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
连接器LNK是通过调用cvtres.exe完成文件向coff格式的转换的,所以出现这种错误的原因就是cvtres.exe出现了问题。在电脑里面搜索一下cvtres.exe,发现存在多个文件,使用最新的cvtres.exe替换老的文件即可,替换之前记得备份一下,如果不对,可以替换回来。例如:我的电脑里面安装了vs2010,最近更新了系统,打了一些补丁,结果就出转载 2014-07-25 14:20:17 · 374 阅读 · 0 评论 -
inlining的里里外外
最近在看Effective C++,有些关于inline的摘录下来以供大家理解。Inline原创 2014-06-02 11:20:57 · 535 阅读 · 0 评论 -
Copy-and-swap
为了在自定义类里重载一个异常安全(exception safe)的赋值操作符,创造了一个这样的习惯用语。也叫:Create-Temporary-and-Swap。要想写健壮的C++代码,异常安全非常重要。可以给异常安全分三级:1> 基本安全:实现简单、代价小。应该作为常规手段。2> 很安全:在任何场合都实现这一步不太可能。本例的赋值操作符重载算是一个。3> 不抛出异常:可以看n转载 2014-06-02 10:44:39 · 848 阅读 · 0 评论 -
PDB文件:每个开发人员都必须知道的
PDB文件:每个开发人员都必须知道的 一 什么是PDB文件大部分的开发人员应该都知道PDB文件是用来帮助软件的调试的。但是他究竟是如何工作的呢,我们可能并不熟悉。本文描述了PDB文件的存储和内容。同时还描 述了debugger如何找到binay相应的PDB文件,以及debugger如何找到与binay对应的源代码文件。本文适用于所有的Native和 Managed的开发人员。转载 2015-12-08 14:24:55 · 395 阅读 · 0 评论