上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 23 下一页
摘要: 1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。 3.因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。 4.C... 阅读全文
posted @ 2013-05-30 17:32 任智康 阅读(553) 评论(0) 推荐(0) 编辑
摘要: 1、命名空间std C++标准中引入命名空间的概念,是为了解决不同模块或者函数库中相同标识符冲突的问题。有了命名空间的概念,标识符就被限制在特定的范围(函数)内,不会引起命名冲突。最典型的例子就是std命名空间,C++标准库中所有标识符都包含在该命名空间中。 如果确信在程序中引用某个或者某些程序库不会引起命名冲突(即库中的标识符不会在程序中代表其他函数名称),那么可以通过using操作符来简化对程序库中标识符(通常时函数)的使用,例如:using namespace std;那么就可以不用在标识符在前缀std::来使用C++标准库库中的函数了。 <iostream>和<ios 阅读全文
posted @ 2013-05-30 17:24 任智康 阅读(16665) 评论(0) 推荐(3) 编辑
摘要: #include <iostream>using namespace std;class Enemy{public: Enemy(int damage = 10) { m_pDamage = new int(damage); } virtual ~Enemy() //定义虚拟析构函数,这儿有必要性,见下 { cout << "m_pDamage deleted\n"; delete m_pDamage; } void Taunt() const { cout << "The enemy says he will figh... 阅读全文
posted @ 2013-05-29 22:10 任智康 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。(这里我觉得要补充,重写的话可以有两种,直接重写成员函数和重写虚函数,只有重写了虚函数的才能算作是体现了C++多态性)。而重载则是允许有多个同名的函数,而这些函数的参数列表不同,允许参数个数不同,参数类型不同,或者两者都不同。 多态与非多态的实质区别就是函数地址是早绑定还是晚绑定。如果函数的调用,在编译器编译期间就可以确定函数的调用地址,并生产代码,... 阅读全文
posted @ 2013-05-29 21:39 任智康 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 因为使用模板可以使程序员建立具有通用类型的函数库和类库。模板也是C++语言支持参数化多态性的工具。函数模板 函数模板能以同样的程序代码对不同类型的数据进行处理,其关键是将所处理的数据类型说明为参数,即类型参数化。 定义函数模板的一般形式是: template<class类型参数名1 ,class类型参数名2,…> 函数返回值类型 函数名(形参表) { 函数体 }说明: (1)这里的类型参数名就是代表形形色色数据类型的通用参数名,它可以代表基本数据类型,也可以代表类。 (2)编写函数模板的方法是:step 1:定义一个普通的函数,数据类型采用具体的普通的数据类型,仍以打印数... 阅读全文
posted @ 2013-05-26 15:16 任智康 阅读(4480) 评论(0) 推荐(1) 编辑
摘要: 1.extern的作用(附带const和static)const能定义常量,并且常量是有数据类型的,且可以调试。const还可以修饰函数形式参数、返回值和类的成员函数。static最主要的功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0;extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时在其他模块中寻找其定义。另外还可以做链接指示。static声明一个变量的作用(1)对局部变量声明,则为改变量分配的控件在整个程序执行期间始终存在;(2)对全局变量声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。静态局 阅读全文
posted @ 2013-05-26 13:40 任智康 阅读(690) 评论(0) 推荐(1) 编辑
摘要: 可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信 阅读全文
posted @ 2013-05-26 13:21 任智康 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 这两者都有什么不同呢?首先,5年前我们就开始反对把.h符号继续用在标准的头文件中。继续使用过时的规则可不是个好的方法。从功能性的角度来讲,<iostream>包含了一系列模板化的I/O类,相反地<iostream.h>只仅仅是支持字符流。另外,输入输出流的C++标准规范接口在一些微妙的细节上都已改进,因此,<iostream>和<iostream.h>在接口和执行上都是不同的。最后,<iostream>的各组成都是以STL(Standard Template Library,标准模板库)的形式声明的,然而<iostream.h& 阅读全文
posted @ 2013-05-26 11:46 任智康 阅读(501) 评论(0) 推荐(0) 编辑
摘要: #include "stdio.h"#include "iostream"int main(){ char s[]="123456789"; char d[]="123"; strcpy(d,s); int a[]={1,2,3,4,5}; printf("%s,%s,%d",d,s,sizeof(a)); return 0;} 可以看出,不同数组的地址是按 从高到低的顺序给数组的首地址的。即越后面的数组的首地址越低。(5c+14(十六机制)=70) 阅读全文
posted @ 2013-05-26 11:41 任智康 阅读(1801) 评论(0) 推荐(0) 编辑
摘要: 1.故事的起源“endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。我们一般将endian翻译成“字节序”,将big endian和little endian称作“大尾”和“小尾”。2.什么是Big Endian和Little Endian?在设计计算机系统的时候,有两种处理内存中数据的方法。一种叫为little-endian,存放在内存中最低位的数值是来自数据的最右边部分(也就是数据的最低位部分)。比如某些文件需要在不同平台处理,或者通 阅读全文
posted @ 2013-05-26 10:49 任智康 阅读(18351) 评论(1) 推荐(4) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 23 下一页