文章分类 - C/C++
摘要:开放源代码的项目,通常都是不完整的,就是说:只有源代码,没有完整的产品使用说明书,没有软件开发过程中的完整文档,源码中的注释也很少。之所以会这 样,可能是因为作者们有所保留,只开放源码,不开放关键的文档和设计思路,还可能是因为作者们都是旧派的程序狂人,不重视软件工程和文档。 那我们该怎么办呢? 只有一条路,就是自己动手来补齐缺少的所有关键文档。 补齐项目的文档,跟开发一个新项目有所不同,因为项目的源码已经编写完成了,所以,这是一个相反的分析设计过程。 下面就具体说说该怎么办: 1.一个开放源代码的项目,总得带有一点说明吧,这就是最初的线索。即使是几句话,也很重要。 ...
阅读全文
摘要:详解大端模式和小端模式一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始 的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令所有的子民吃鸡蛋的时候,必须 先打破鸡蛋较小的一端,违令者重罚。然后老百姓对此法令极为反感,期间发生了多次叛乱,其中一个皇帝因此送命,另一个丢了王位,产生叛乱的原因就是另一个 国家Blefuscu的国王大臣煽动起来...
阅读全文
摘要:1.new的执行过程:(1)通过operator new申请内存(2)使用placement new调用构造函数(简单类型忽略此步)(3)返回内存指针2. new和malloc的比较:(1)new失败时会调用new_handler处理函数,malloc不会,失败时返回NULL(2)new能通过placement new自动调用对象的构造函数,malloc不会(3)new出来的东西是带类型的,malloc是void*,需要强制转换(4)new是C++运算符,malloc是C标准库函数3. delete的执行过程:(1)调用析构函数(简单类型忽略此步)(2)释放内存4.delete和free的比较
阅读全文
摘要:“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:class A{ int i;public: A(int _i) :i(_i*_i) {} void Say() { printf("i=%d/n", i); }};//调用new:A* pa = new A(3
阅读全文
摘要:在说指向指针的指针之前,不得不说指向变量的指针。先看如下示例:1. 指向整型指针先看如下示例:View Code1#include<iostream>2usingnamespacestd;34intmain()5{6inta=5;7int*p=&a;8cout<<"a="<<a<<endl9<<"&a="<<&a<<endl10<<"*p="<<*p<<endl11<<"
阅读全文
摘要:const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 这个知识易混点之前是看过了,今天做Linux上写GTK程序时又出现个Warning,发散一下又想到这个问题,于是翻起来重嚼一下。事实上这个概念谁都有只是三种声明方式非常相似:Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:把一个声明从右向左读。char * const cp; ( * 读成 pointer to ) cp is a const pointer to charconst char * p; p is a po.
阅读全文
摘要:如何在C/C++中动态分配二维数组在C/C++中动态分配二维数组可以先申请一维的指针数组,然后该数组中的每个指针再申请数组,这样就相当于二维数组了,但是这种方法会导致每行可能不相邻,从而访问效率比较低。如何申请连续的二维数组了?本文将分别三个方面讲解:一.动态申请列大小固定的二维数组二.C语言中动态申请连续的二维数组三.C++语言中动态申请连续的二维数组一.动态申请列大小固定的二维数组首先如果二维数组的列大小固定,那么很简单,可以用申请一维数数组再其指针强制转化成为二维数组指针即可。详见代码://列大小固定的二维数组可以申请一维数据并将指针强转成二维数组 #include <stdio.
阅读全文
摘要:c++、getline、vc6.0、bug、处理方法转自:http://hi.baidu.com/xuxu8511/item/0777e2fc7c7214c50dd1c8c1include<iostream>#include<string>using namespace std;int main(){string str="I love Andy";cout<<str<<endl;getline(cin,str);cout<<str<<endl;return 0;}当我运行这个程序,输入字符串且按了回车
阅读全文

浙公网安备 33010602011771号