C++
泉山绿树
这个人很懒 什么也没写
展开
-
C++ explicit<转>
好久没写博客了,这些天看effective C++积攒下不少疑问,今天就看到个。 关于explicit的,本身没什么特殊含义,用来声明构造函数不能发生隐式类型转换的,查资料又对构造函数有些理解,故此记录下~C++中, 一个参数的构造函数, 承担了两个角色。 1 是个构造器 2 是个默认且隐含的类型转换操作符。例如下面例子中C的构造函数C(int i)就是,既可以用来作为构造器,又可以实现隐式转换C转载 2015-06-18 23:11:33 · 325 阅读 · 0 评论 -
C++中的资源管理<转载>
C++中最重要, 也最令人头疼的事情之一就是资源管理。原则上,每次在堆区用关键字new申请一块内存,必须对应一个delete来释放它。对应一般的小程序,通过细心地写代码,很容易做到。但当程序变大、变复杂的时候,仅仅依靠谨慎的编写程序也是很难做到的。考虑以下几种情况:用new申请资源与用delete释放资源之间的跨度比较大,很容易在做完中间一系列的任务后忘记最初曾申请过资源,导致未释放它。一个资源转载 2015-06-18 23:28:25 · 274 阅读 · 0 评论 -
非递归深度优先遍历算法
当然是伪码,自己在纸上模拟了一遍是没错的。如果发现什么错误欢迎指正。N_DFS(gragh g, int i){ int j; seqstack s; INITSTACK(s); while(!EMPTY(s)){ if(visited[i] == 0){ visited[i] = 1; printf(g原创 2015-05-25 23:15:38 · 2704 阅读 · 0 评论 -
5分钟搞定内存对齐『转』
写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧./********************分割线如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢? 体系结构的对齐和不对齐,是在时间和空间上的一个权衡。对齐节省了时间。假转载 2015-07-12 01:32:56 · 335 阅读 · 0 评论 -
sizeof,终极无惑『转』
前向声明sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章。但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助。菜鸟我对C++的掌握尚未深入,其中不乏错误,欢迎各位扔砖砸蛋转载 2015-07-12 01:58:55 · 523 阅读 · 0 评论 -
cin深入分析(上) - cin输入操作处理(转)
cin<<, cin.get,cin.getline等函数深入分析 很多初学者都认为cin函数是一个很简单的函数,其实不然!cin函数有很多需要了解的知识(比如:cin的返回值是什么,cin提供了哪些成员函数且分别是什么作用,如cin.clear(), cin.ignore(), cin.fail(), cin.good()等等),如果没有很好的掌握,在使用的时候很可能会出问题却不知其原因!而且很转载 2015-07-29 20:26:57 · 464 阅读 · 0 评论 -
C++类内为什么不能定义非const的static成员(待续)
学习CppPimer的时候遇到这个问题,google下最终解决我的疑惑,分享上来 class Account{ public: //Account() = default; void calculate(){amount += amount * interestRate;} static double rate(){return intere原创 2015-07-17 16:51:25 · 405 阅读 · 0 评论 -
cin深入分析(下) - cin的错误处理(转)
深入了解cin错误处理机制,深入了解cin.clear/cin.ignore/cin.good/cin.fail等函数 在前一节中我们有几个例子中提到了cin函数出错,以致不再执行读操作(程序8)。而且我们经常会看到程序中会出现cin.clear(),cin.ignore(), cin.fail()等函数。这些函数都是与cin的错误处理有关的。这一节我们来分析一下cin的错误处理机制,并且学习转载 2015-07-29 20:49:44 · 500 阅读 · 0 评论 -
关于C++表达式求值的困惑
#include <iostream>using namespace std;int main(int argc, char *argv[]){ int a = 3; int b = 4; int c = 5; //int ans = a + b+ ++c;//13 //int ans = a+b+++c; //12 int ans = a +原创 2015-09-07 23:04:41 · 287 阅读 · 0 评论