C/C++基础
文章平均质量分 69
K19709
这个作者很懒,什么都没留下…
展开
-
C++ 异常处理
程序运行时有些错误是不能避免的。出现错误时,传统的做法是返回一个错误值,调用if语句进行判断。这种做法有两种缺陷: (1) 构造函数不可能返回错误值; (2) if语句可能出现更多错误。 C++提供了异常机制。异常处理的基本思想是:当出现错误时抛出一原创 2011-09-17 16:50:31 · 345 阅读 · 0 评论 -
类对象的“传值”与“传引用”
"传值"就是通过值来传递一个对象,这个过程需要拷贝构造函数来进行。而"传引用"实质上就是一种指针传递。两种传递方式在使用上存在效率问题和"切割"问题。 1、效率 而前所述,"传值"需要调用拷贝构造函数。例如: class CTest { public: CTest() { cout原创 2012-03-25 21:55:23 · 1899 阅读 · 0 评论 -
结构体对齐和类的大小
一、字节对齐的概念 如果一个变量占用N个字节,那么该变量的起始地址必须是N的整数倍。这就是字节对齐。当然,字节对齐是系统内部操作的。理论上来说,系统能从任意地址开始读取数据。但是有些系统偏偏喜欢规定某些类型变量只能从特定的起始地址开始访问,这就决定了类型变量必须按照某种规则在内存空间存放。 二、对齐准则 对齐细节与编译器有关,不过一般满足下面三个准则: (1)原创 2012-03-16 15:09:57 · 436 阅读 · 0 评论 -
关于const
《Effective C++》中提到"尽量用编译器而不用预处理"。在C语言中,#define宏定义是很不安全的。例如定义下面的PI: #define PI 3.14 编译器是看不到PI这个符号的,因为在它进入编译器之前,它已经被预处理去掉,而没有保存在符号表里面。如何有关PI的代码出错时,报错信息是指3.14,而不是PI,万一这个PI不是自己定义的,你得花多少时间把它给挖出原创 2011-09-13 23:36:01 · 483 阅读 · 0 评论 -
RSA算法
一、说明 RSA算法既能用于数据加密,也能用于数字签名。其理论依据是:寻找两个大素数容易,而将它们的乘积分解开则异常困难。在RSA算法中,包含两对密钥:公有密钥对和私有密钥对。公有密钥对是公开的。 二、密钥产生过程 (1)选择两个大素数p和q,p和q均大于10100,n = p * q,z = (p - 1) * (q - 1); (2)随机选择加原创 2011-12-26 21:20:37 · 723 阅读 · 0 评论 -
mutable关键字
mutable的英文意思是“可变的、易变的”。它在C++中的作用是:被定义为mutable的成员变量能在const成员函数中被修改。它使为了突破const的限制而设置的。 众所周知,如果一个成员函数不改变类的对象的状态,通常把这个成员函数定义为const。不过有时候,的确需要修改与对象的状态无关的成员变量,这时mutable就发挥作用了。例如: class CTest {原创 2012-01-04 12:21:24 · 435 阅读 · 0 评论 -
explicit关键字
explicit的英文意思是“明确的、毫不隐瞒的”。在C++中,它的作用是:阻止不应该允许的经过转换构造函数进行的隐式转换的发生。 构造函数通常用explicit来声明。只有一个参数的构造函数(或者除了第一个参数外其他的参数都有默认值的多参数构造函数)有两种角色:构造器及默认且隐含的类型转换操作符。看下面的例子: class CTest() { pu原创 2011-12-30 17:24:12 · 438 阅读 · 0 评论 -
函数指针
一、函数指针的定义 顾名思义,函数指针指的是指向函数的指针。每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址,因而可以利用函数指针调用该函数。它的定义如下: 函数类型 (*指针名字)(函数形参表) 可以这样来理解这个定义(假设指针名字为PtrName): ① PtrName首先与‘*’相结合,这意味着PtrName是一个指针。 ② PtrNam原创 2012-01-13 17:26:25 · 433 阅读 · 0 评论 -
C++ 流的随机访问
1、几个函数 为支持随机访问,IO类型维护一个“标志”,该“标志”能决定从何处读或写。 IO类型提供了两对函数:seekg()/tellg()和seekp()/tellp()。前者有输入流使用,后者由输出流使用。这四个函数的功能如下: seekg() //重新定位输入流中的位置 tellg(原创 2011-10-13 14:07:11 · 603 阅读 · 0 评论 -
C++ 关于构造函数
每个类都有构造函数。构造函数的主要功能是给对象分配空间、对私有成员数据赋初值。一般不做赋初值以外的事情。平时遇到的构造函数有:缺省参数的构造函数、缺省的构造函数、重载构造函数、拷贝构造函数。 使用上述几种构造函数时,应注意以下几点: 1、缺省参数的构造函数中,形参已经有默认值,定义对象是可根据需要使用其缺省值。 例如: class CText原创 2011-11-25 17:15:49 · 1379 阅读 · 0 评论 -
C++ 虚函数
1、定义 C++语言有多态特性,而虚函数正是其表现之一。关于其定义,有以下三个要点: (1)必须是基类的非静态成员函数。 (2)访问权限可以是保护型或公有型。 (3)函数前需加上关键字virtual。 2、作用 下面举一例子说明。 #include using namespace std; cl原创 2011-09-25 15:36:21 · 602 阅读 · 0 评论 -
成员函数模板
我们知道,类里面提供一个缺省的拷贝构造函数(copy constructor)和拷贝赋值运算符(copy assignment operator)。所谓“缺省”,就是你自己不写出来,系统就自己为你生成。我们来看下面一段代码:templateclass CT{public: CT(){} template CT(const X& ref) { cout原创 2012-08-30 15:56:00 · 555 阅读 · 0 评论