c++
文章平均质量分 64
crazyhacking
like a hacker
展开
-
一个动态的指针数组怎样获得长度
在debug 下 可以解决,但是在release 模式下 不知道如何解决~~#includeusing namespace std;int GetNewBufferSize(void *p){if ( p )return *(int*)((char *)p-16);elsereturn 0;}int main(){int *arry=new in转载 2012-03-01 11:43:09 · 3856 阅读 · 0 评论 -
《accelerated c++》---------第六章
本章主要讲了算法部分。就是里面的算法。原创 2013-07-08 11:49:23 · 893 阅读 · 0 评论 -
C++异常(exception)第三篇-------如何释放资源(没有finally语句)
问题:C++中没有finally,那么应该在哪里关闭资源?C++的try{}catch(){},为什么没有finally{}块来释放资源?如类中的一个方法,局部变量File * file=NULL;Try{file=fopen(“aaa.txt”,”r”);然后执行一些操作。}最后fclose(file);假如,file操作时发生异常,需要关闭。对于Ja转载 2013-08-02 14:41:01 · 2482 阅读 · 0 评论 -
c++异常处理第四篇---不使用try catch语句,使用Loki::ScopeGuard
转载:神奇的Loki::ScopeGuard 2011-07-05 12:52:05分类: C/C++转载:http://blog.csdn.net/fangqu/article/details/4242245---------------------------------------------------------------------------转载 2013-08-02 14:42:11 · 2400 阅读 · 0 评论 -
C++异常第二篇---C++标准库异常类exception的使用
C++标准库异常类继承层次中的根类为exception,其定义在exception头文件中,它是C++标准库所有函数抛出异常的基类,exception的接口定义如下:namespace std { class exception { public: exception() throw(); //转载 2013-08-02 11:54:17 · 7803 阅读 · 1 评论 -
STL中的所有算法(70个)
STL所有算法简介STL中的所有算法(70个)参考自:http://www.cppblog.com/mzty/archive/2007/03/14/19819.htmlhttp://hi.baidu.com/dinglinbin/blog/item/887e7c30c12e429ba9018e30.html STL算法部分主要由头文件,,组成。要使用 STL中的转载 2013-08-02 16:31:52 · 1328 阅读 · 0 评论 -
C++------------typedef 函数指针类型定义
摘要bycrazyhacking: typedef 是定义了一种“函数指针”类型,可以再声明很多变量。函数指针的定义是定义了一个变量。int max(int x,int y){ return(x>y?x:y); }1.定义函数指针类型:typedef int (*fun_ptr)(int,int);2.声明变量,赋值:fun_转载 2013-12-27 11:28:15 · 2293 阅读 · 0 评论 -
函数指针
摘要:函数指针作用一般有二:1 调用函数 2 作为参数。 需要注意的是typedef这种是定义了 一种函数指针的类型(特定的参数类型和返回值)代码示例如下,int func1(int x){return x;}int func2(int x){ cout return 2;}//函数名做参数,隐式的使用函数指针 int f(int原创 2014-01-22 11:06:52 · 847 阅读 · 0 评论 -
模版与泛型编程--<c++ primer>16章
一 基本定义 模版包括模版类和模版函数。定义格式为;template class和template没有区别。inline模版函数:template inline T min(const T&,const T&);模版形参包括类型模版形参和非类型模版形参。例如,类型模版形参T,非类型模版形参Ntemplate void arrayinit(T (&sparm)[N])原创 2012-09-20 15:13:41 · 643 阅读 · 0 评论 -
《accelerated c++》第九章---设计类
本章简单介绍了类的设计,但是包含了一些好的shejiyuanz原创 2014-04-20 18:49:17 · 837 阅读 · 0 评论 -
智能指针之shared_ptr
http://baike.baidu.com/view/1391603.htmhttp://baike.baidu.com/view/2276295.htm转载 2013-01-16 13:51:17 · 789 阅读 · 0 评论 -
C++调用java
1 java类生成c头文件和库文件2 对于c/c++程序,启动时先qid转载 2014-07-24 11:04:43 · 2064 阅读 · 0 评论 -
C++异常(exception)第一篇--综合讲解
C++中的异常(exception)作者:张笑猛原文出处:http://objects.nease.net/1.简介1.1常用的错误处理方式1.2不常用的处理方式1.3异常2.异常的语法2.1try2.2catch2.3throw2.4函数声明3.异常使用技巧3.1异常是如何工作的 3.1.1unwinding sta转载 2013-08-02 10:57:24 · 6304 阅读 · 2 评论 -
“#ifdef __cplusplus extern "C" { #endif”的定义-----C和C++的互相调用
“#ifdef __cplusplus extern "C" { #endif”的定义看一些程序的时候老是有“#ifdef __cplusplusextern "C" {#endif”的定义,搞搞清楚是怎么回事:Microsoft-Specific Predefined Macros__cplusplus Defined for C++ prog转载 2014-09-18 19:41:51 · 873 阅读 · 0 评论 -
C/C++定义全局变量/常量几种方法的区别
摘要:使用全局变量最稳妥的方法,就是在common.h中声明,在common.cpp中定义;其他文件include “common.h”来使用全局变量在讨论全局变量之前我们先要明白几个基本的概念:1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那转载 2014-12-12 14:48:51 · 2725 阅读 · 0 评论 -
重载自增运算符(前置自增++p和后置自增p++)
如何重载增量运算符 ++ 和 -- 运算符++和—有前置和后置两种形式,如果不区分前置和后置,则使用operator++( )或operator--( )即可;否则,要使用operator++( )或operator--( )来重载前置运算符,使用operator++(int)或operator--(int)来重载后置运算符,调用时,参数int被传递给值0。如下列程序段:(1)转载 2012-11-09 17:49:48 · 3195 阅读 · 0 评论 -
C++对象内存布局2---进阶篇-----C++ 对象的内存布局(下)
重复继承 下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。 下图是一个继承图,我们重载了父类的f()函数。 其类继承的源代码如下所示。其中,每个类都有两个变量,一个是整形(4字节),一个是字符(1字节),而且还有自己的虚函数,自己overwrite父类的虚函数。如子类D中,f()覆盖了超类的函数, f1() 和f2() 覆转载 2012-11-02 21:59:01 · 695 阅读 · 0 评论 -
C++对象的内存布局1---基础篇----C++ 虚函数表解析
[-]前言虚函数表一般继承(无虚函数覆盖)一般继承(有虚函数覆盖)多重继承(无虚函数覆盖)多重继承(有虚函数覆盖)安全性结束语附录一:VC中查看虚函数表附录 二:例程 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是转载 2012-11-02 21:54:58 · 1059 阅读 · 0 评论 -
c++:strcat潜在的错误不报告
#include#includeusing namespace std;int main(){char a[]="hello";char b[]="world";coutstrcat(a,b);coutcout}运行结果:5helloworld10这个小程序中数组a的大小被改变了,但是可以正常运行。潜在的错误影响呢原创 2012-03-13 22:04:41 · 1621 阅读 · 0 评论 -
第九章-顺序容器----重学C++之《 C++ PRIMER》
本章讲解了顺序容器以及他们通用的接口操作。涉及的容器有:顺序容器vector,list,deque,并提及了stack,queue,priority_queue这三种容器适配器。最常用的容器是vector,支持对元素的快速访问。主要内容:1 容器的定义和初始化2 迭代器的操作。迭代器的元素范围是左闭合区间,即[ )。3 顺序容器的操作。插入和删除。比较.设置容器大原创 2012-04-22 16:33:49 · 606 阅读 · 0 评论 -
抛出异常
抛出异常可以给人家提示出信息,人家可以知道哪错了.是主动的防范。是这样的吗?原创 2012-04-22 17:20:45 · 772 阅读 · 0 评论 -
第12章--类--重学C++之《C++ PRIMER》
一定义 类的成员分为public,private,和protected三种。 类内部定义的函数默认为inline。对于成员函数,在形参表之后添加const关键字,得到常量成员函数,则此成员函数不能改变操作对象的数据成员。类可以有class和struct两个关键字定义。区别:在类的左括号之后,第一个访问标号之前;如果是class定义的,则默认这些成员是私有的;如果是struc原创 2012-04-28 09:02:43 · 616 阅读 · 0 评论 -
派生类可以访问基类的private成员吗
1.从派生类的使用者来讲,所有的基类方法和成员都是private的,不可访问2.从派生类内部来讲,除了基类的private的方法和成员,其他的都可访问原创 2012-05-20 21:42:37 · 7254 阅读 · 0 评论 -
extern的作用(综合网络)
extern 作用基本定义:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。一 全局变量/函数extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中.引用一个定义在其它模块的全局变量或函数(如,全局函数或变量定义在A模块,B欲引用)有两种方法,转载 2012-08-15 11:18:24 · 646 阅读 · 0 评论 -
C程序内存区域分配(5个段作用)
参考:http://www.360doc.com/content/11/0330/21/1317564_105977930.shtmlhttp://hi.baidu.com/bitcore/blog/item/77c521c65f4512d7d10060eb.htmlhttp://apps.hi.baidu.com/share/detail/22734757http://my.os转载 2012-09-16 16:40:13 · 1164 阅读 · 0 评论 -
《面向对象编程》--c++ primer 第15章
一(数据抽象)继承和动态绑定是面向对象编程最重要的两个行为。只有public和protected成员才能被继承。(1)protected成员使用规则1 像proivate成员一样,protected成员不能被类的用户访问(基类可以访问,基类对象不能访问protected成员)。2 像public成员一样,protected成员可以被类的派生类访问(派生类可以访问protected成原创 2012-09-18 16:07:29 · 771 阅读 · 0 评论 -
Inheritance: 'A' is an inaccessible base of 'B'
简介:B PRIVATE/protected 继承A,那么 A 的指针不能指向B分析:private表示派生类是更加严格的基类或者在某方面继承了基类。它不遵守 Liskov substitution principle。$ cat inheritance.cpp #include using namespace std;class A { };class B : priva转载 2012-09-24 16:37:31 · 7246 阅读 · 0 评论 -
<c++ primer>--第五部分 高级主题
一 多重继承与虚继承1多重继承派生类的对象包含每个基类的基类子对象。派生类构造函数的次序按照基类构造函数在派生类类表中的出现顺序。析构函数的次序是构造函数的逆序。多个基类可能导致二义性。(含有相同的成员)解决方法:1指定某个基类。2在派生类中定义这样一个成员。2虚继承(virtual)为了避免多次包含同一基类,定义虚继承。类通过虚继承之处它希望共享其虚基类的状原创 2012-09-25 16:46:26 · 846 阅读 · 0 评论 -
STL中erase()
erase()函数的功能是用来删除容器中的元素删除某个容器里的某个元素:c.erase(T);看似一个简单的动作,然而对不同类型的容器,内部却做了截然不同的事情,后面介绍。 假设有这样一个题目,将某个容器中所有满足条件N == X的元素删除,按照常规的思路应该有类似这样的代码:// 假设Container和container分别表示一种容器和对应的一个对象Container转载 2012-10-29 15:26:23 · 627 阅读 · 0 评论 -
C++中的static
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。面向过程的static1 静态全局变量(可以被整个文件所使用,但是不能在文件意外使用)静态全局变量有以下特点: 该变量在全局数据区分配内存; 未经初始化的静态全局变量会被程序自动初始化为0(在函数体转载 2012-10-29 16:31:19 · 611 阅读 · 0 评论 -
第十章-关联容器----重学C++之《 C++ PRIMER》
1综述关联容器通过键存储和读取元素,而顺序容器通过元素在容器中的位置顺序存储和访问元素。关联容器大部分行为与顺序容器相同,但是其独特之处在于支持键的使用。关联容器类型:map(关联数组,元素通过键来读取),set(只有键),multimap(一个键对应多个值),multiset容器元素根据键的次序排列。例如 map n那么键值对("abc","abc") 在("abd","ab原创 2012-05-27 22:06:54 · 753 阅读 · 0 评论 -
stl之容器区别: vector list deque set map
要点总结如下:因此在实际使用时,如何选择这三个容器中哪一个,应根据你的需要而定,一般应遵循下面的原则:1、如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector2、如果你需要大量的插入和删除,而不关心随即存取,则应使用list3、如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque stl容器区别: vector list deque se转载 2012-10-30 12:17:35 · 679 阅读 · 0 评论 -
c++对象的内存布局2--进阶篇---C++ 对象的内存布局(上)
目录(?)[-]前言对象的影响因素知识复习单一的一般继承多重继承前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说明一些机理上的问题,也是为了图转载 2012-11-02 21:57:23 · 797 阅读 · 0 评论 -
C++数据结构之map----第一篇
1 对于非标准类型的map,map 只需要重载小于号就可以了转载 2013-11-27 19:27:56 · 4567 阅读 · 0 评论