C++
文章平均质量分 58
Elegant_Design
这个作者很懒,什么都没留下…
展开
-
友元
在说明什么是友元之前,我们先说明一下为什么需要友元与友元的缺点: 通常对于普通函数来说,要访问类的保护成员是不可能的,如果想这么做那么必须把类的成员都生命成为public(共用的),然而这做带来的问题遍是任何外部函数都可以毫无约束的访问它操作它,c++利用friend修饰符,可以让一些你设定的函数能够对这些保护数据进行操作,避免把类成员全部设置成public,最大限度的保护数据成员的安全。 友元转载 2007-09-02 16:53:00 · 632 阅读 · 0 评论 -
main主函数执行完后,可以利用atexit再执行一段代码
#include#includeint atexit(void(*function)(void));void fun1(void),fun2(void),fun3(void);int main(){ printf("begin/n"); atexit(fun1); atexit(fun2); atexit(fun3); printf("over/n"); return 0;}voi原创 2007-09-04 16:22:00 · 1159 阅读 · 0 评论 -
空指针和迷途指针的区别
解释代码:#include int main(){ int *pInt = new int; *pInt=10; cout delete pInt; pInt=0; *pInt=20; // oh no, this was deleled. cout return 0;}//Compile this program successfully,but when running it,原创 2007-09-04 16:09:00 · 2778 阅读 · 0 评论 -
C++中有了malloc/free,为什么还需要new/delete?
malloc与free是C/C++语言的标准库函数,new/delete 是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于ma翻译 2007-09-04 15:57:00 · 1088 阅读 · 0 评论 -
句柄和指针的区别与联系
句柄是一个32位的整数,实际上是windows在内存中维护的一个对象(窗口等)内存物理地址列表的整数索引。因为windows的内存管理经常会将当前空闲对象的内存释放掉,当需要时访问再重新提交到物理存储,所以对象的物理地址是变化的,不允许程序直接通过物理地址来访问对象。程序将想访问的对象的句柄传递给系统,系统根据句柄检索自己维护的对象列表就能知道程序想访问的对象及其物理地址了。翻译 2007-09-04 15:52:00 · 1077 阅读 · 0 评论 -
函数的指针与指针函数
(1) Long (*fun)(int) fun是一个函数指针,这个指针返回值是long,所带的参数是int. (2) Long *fun(int) 指针函数,是一个带有整数参量并返回一个长整型变量的指针的函数.(3) Int (*(*F)(int,int))(int) F是一个函数的指针, 指向的函数的类型是有两个int参数并且返回一个函数原创 2007-09-04 11:21:00 · 781 阅读 · 0 评论 -
const与const指针
一.C/C++中的const C中的const是"一个不能被改变的普通变量",在C中,它总是占内存的,而且它的名字是全局符,默认是外部连接.C编译器不能把const看成一个编译期的常量.在C中: const bufsize =100; char buf[bufsize]; 是错误的. C++中的const默认是内部连接,也就是说,cons原创 2007-09-04 10:03:00 · 765 阅读 · 0 评论 -
剖析类的this指针
this指针是在实例化一个对象后产生的,并且指向对象本身.类的this指针有如下特点:(1) this只能在成员函数中使用. 全局函数,静态函数都不能使用this. 实际上,成员函数默认第一个参数为T* const this 如: class A{public: int func(int p){]}; 其中,func的原型在编译器原创 2007-09-03 22:41:00 · 879 阅读 · 0 评论 -
C++ 的构造/析构/赋值/拷贝函数比较
构造函数、析构函数与赋值函数是每个类最基本的函数。每个类只有一个析构函数,但可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数)和 多个赋值函数(除了同类的赋值以外,还有其他的赋值方法)。对于任意一个类A,如果不想编写上述函数,C++编译器将自动为A产生四个缺省的函数,如A(void); // 缺省的无参数构造函数A(const A &a);转载 2007-09-03 16:57:00 · 1086 阅读 · 0 评论 -
C++对象创建(二)
当一个C++对象被创建时,有两件事会发生:(1)为对象分配内存.(2)调用构造函数来初始化那个内存.到目前为止,我们应该确保步骤 2)一定发生。C++强迫这样做是因为未初始化的对象是程序出错的主要原因。不用关心对象在哪里创建和如何创建的—-构造函数总是被调用。然而,步骤1)可以以几种方式或在可选择的时间内发生:1) 静态存储区域,存储空间在程序开始之前就可以分配。这个存储空间在程序的整原创 2007-09-05 16:10:00 · 2178 阅读 · 1 评论 -
C++对象的创建(一)
C++中假如创建类A的对象a。可以这样做:(1): A a;(2): A *p=new A;这两种方法的异同:A a; 这样的对象的内存分配在栈上,超出作用域(比如在函数fun中创建的a对象,在函数结束后,就超出了作用域) 就调用析构函数将对象销毁。A *p=new A;这种的内存是分配在堆上的,分配之后到程序结束前一直存在,除非你用delete p;这样才会调用析构函数将原创 2007-09-05 10:59:00 · 1639 阅读 · 0 评论 -
公有继承,私有继承,和保护继承
1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。 2. 私有继承(private) 私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。 3. 保护继承(protected) 保护继承的转载 2007-09-04 16:50:00 · 2904 阅读 · 0 评论 -
深入理解sizeof与strlen的区别
Sizeof与Strlen的区别与联系(转) 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以/0结尾的。 sizeof还可以用函数做参数,比如: shor原创 2007-09-03 18:52:00 · 875 阅读 · 0 评论 -
指针与引用的区别
一.定义C++是一种强类型语言,不能把不是同类型的指针相互赋值,如过发生,必须强制类型转换.C++中的引用(&)象一个自动能被编译器逆向引用的常量指针.for ex:int x=0;int &a=x;a++; 这里增加a事实上就是增加x.二 区别(1)初始化区别. 当引用被创建时,它必须被初始化,指针可以在任何时候被初始化.(2)NULL区别原创 2007-09-03 11:23:00 · 803 阅读 · 0 评论 -
堆与栈的区别
堆和栈的区别2007-04-18 20:51 一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) —转载 2007-09-02 22:46:00 · 700 阅读 · 0 评论 -
C++学习之路
首先,关于入门书方面,我觉得到现在我都没有看到一部适合初学者的 C++ 入门书。经典的书都是高手们写的,但根本不适合初学者看。这大概 是 C++ 族群增长的一大瓶颈。 我个人觉得最适合入门的一本书是「从 C 到 C++ 物件导向革命」,当然光看书名大家就猜到这是台湾的书了。它是 1990 年的书,作者陈建维先生是当时 C++ 标准委员会的一员。这本书我觉得相当不错,用不是很大的篇幅,从软转载 2009-06-28 23:37:00 · 2389 阅读 · 1 评论