
c++
文章平均质量分 67
lidoublewen
这个作者很懒,什么都没留下…
展开
-
文字常量区与栈区
今天一大早起来,朋友就给我发给了下面一个题目,要我解释下,答案我是想出来了,可是就是解释不清楚。。。 首先要解决这个问题就必须了解程序在内存的分配:关于堆与栈的栈(stack):是自动分配变量,以及函数调用所使用的一些空间(所谓的局部变量),地址由高向低减少; 堆(heap):由malloc,new等分配的空间的地址,地址由低向高增长。 自己所编写的代码: #include原创 2009-08-17 15:43:00 · 1228 阅读 · 3 评论 -
野指针实例
由于对象复制过程中c++采用按位拷贝给另外一个对象时产生的野指针问题(两个对象公用同一块内存num指针指向了同一块内存) #include#include"string"using namespace std;class A{ public: int* num; string str; A(int* n,string s):num(n),str(s){} ~A() {原创 2009-11-01 22:46:00 · 820 阅读 · 0 评论 -
虚拟函数在内存中的分配问题
#includeusing namespace std;class A{public: int i; A(){i=0;} ~A(){cout virtual void bar(){cout virtual void bar1(){cout };class B:public A{public: int j; B(){j=1;} ~B(){cout void bar(){cout vi原创 2009-09-18 16:09:00 · 625 阅读 · 0 评论 -
bitwise copy
有关bitwise copy的理解(个人理解,有错误请指出,谢谢)如果class没有提供一个explict copy constructor,当class object以"相同class的另一个object"作为初值时,其内部是以所谓的default memberwise initialization手法完成的,也就是把每一个内建的或派生的data member的值,从某一个对象拷贝一份到另外原创 2009-09-08 15:39:00 · 1762 阅读 · 0 评论 -
c++中的私有构造函数
一般构造函数不是私有或者保护成员,但构造函数可以使私有成员函数,在一些特殊的场合,会把构造函数定义为私有或者保护成员。C++类的构造函数一般不应该是私有函数,因为私有函数不能被其他类或者全局函数所使用。而创建C++实例需要调用构造函数。所以如果构造函数是私有函数的话,除了类自己的方法之外,其他类不能构造这个类的实例。一般来说,类做出来就是让其他类使用的,而使用一个类必须先构造它的实例。所以一般情转载 2009-08-30 14:58:00 · 3572 阅读 · 0 评论 -
template模板的声明及定义
我想实现类模板的声明跟定义分类,即分别放在h头文件,cpp文件里下面是我工程里的三个文件:a.h头文件:#ifndef INDIRECTLIST_H_#define INDIRECTLIST_H_ templateclass a{public: a(int MaxListSize = 10);private: MaxSize;};#endif a.cpp文件:#inc原创 2009-08-23 14:18:00 · 2596 阅读 · 0 评论 -
结构体占内存大小计算
struct结构体的大小计算:struct 大小,与pack的大小(在程序中显示设置#pragma pack(),vc6.0默认大小为8)、结构中最大占用有关 struct A{ int a; 0-3 4-7 要填充(padding)以保证内存对齐的原则 double b; 8-15 char c[9]; 1原创 2009-08-21 00:51:00 · 6661 阅读 · 4 评论 -
Debug Assertion Failed
产生上面问题的原因:1.在程序里释放了野指针:#include using namespace std;void main(){int *p ;delete p;//////////////释放野指针指向内容执行错误} #include using namespace std;void main(){int *p =new int(1);delete p;///原创 2009-08-24 17:38:00 · 1080 阅读 · 0 评论 -
有序的双向链表实现
自己写的个有序的双向链表:#includeusing namespace std;templateclass dNode{ public: dNode* pre; dNode* next; T content;};templatedNode* insertNode(dNode *&head ,const T &n) { dNode *newNode = new dNo原创 2009-08-22 15:53:00 · 980 阅读 · 0 评论 -
c++动态创建二维数组
c++动态创建二维数组 方法1:用一维数组代替二维数组 int n,m; cin>>n>>m; int* a = new int[n*m]; for(int i = 0 ; i { cout for(int j = 0 ; j { a[i*m+j] = i+j; cout } } cout delete[] a; 运行结果:0 00491BB0 1原创 2009-08-18 14:04:00 · 879 阅读 · 0 评论 -
函数的重载和重复声明的区别
函数的重载和重复声明的区别:void a(const int a){ cout}void a(int a){cout} 这样是重复声明,因为复制形参时并不考虑形参是否为const,函数操作的只是副本。函数无法修改实参。结果,既可以将const对象传给const形参,也可以传给非const形参,两种形参并无本质区别。 void a(const int& a){原创 2009-08-17 23:26:00 · 1121 阅读 · 0 评论 -
输出缓冲区的管理
每个 IO 对象管理一个缓冲区,用于存储程序读写的数据。如有下面语句: os 系统将字符串字面值存储在与流 os 关联的缓冲区中。下面几种情况将导致缓冲区的内容被刷新,即写入到真实的输出设备或者文件:1、程序正常结束。作为 main 返回工作的一部分,将清空所有输出缓冲区。2、在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新。3、用操纵符(转载 2009-08-18 20:43:00 · 1014 阅读 · 0 评论 -
二分法实现数字的开方运算
今天闲着,听了mit的计算机编程课程后,写了一个实现开平方的算法,主要也体现了二分法的思想,每次迭代让问题规模减半.原创 2011-07-08 21:17:29 · 3346 阅读 · 2 评论