2011年9月8日

类3-类的static属性

摘要: 在类中的static数据成员或函数都是独立于对像的。即只要程序一运行,类就已存在了,这时不管此类的对象是否存在,但这些static的成员都已存在了。也就是说static成员只建立一次,在类产生时就建立了,与对象无关,但对象可以访问它。因此,在访问static成员时,对象不一定存在,所以就不能访问类的非static成员,所在在static函数中不能访问非static成员,否则编译器会报错。static的数据成员在开始时要初始化,因与对象无关,故在全局部分初始化此数据成员,初始化时不要带上static关键字,但要带上类名和作用域解析运算符。否则编译器以为是声明的新变量。static的函数成员在类外 阅读全文

posted @ 2011-09-08 10:49 天上星 阅读(1338) 评论(0) 推荐(0)

类2--类的const属性

摘要: 大家记得这样的声明: const int rvalue=5;一、固定对象即rvalue是固定的,其值不容许改动。同理,当我们声明了一个类时,要产生一个固定的对象,即对象的数据成员是不容许再改动的。我们可以用这样的方式处理(以上节CBox类为例):const CBox box(10,20,5);这样我们就产生了一个以10X20X5尺寸大小的对像,这个对象不允许再被改动。被声明为const的对象它的指针this也是const的,所以指向的对像是不能改动的。二、类的const成员函数 格式为在类的成员函数头后面加上const即可。 此时把此函数指针也指定为const,这时不能在函数定义的内部给类的. 阅读全文

posted @ 2011-09-08 10:02 天上星 阅读(567) 评论(0) 推荐(0)

2011年9月6日

类1

摘要: 请看下面的类及其调用:#include <iostream>using namespace std;class CBox{private: float m_long,m_width,m_height; void mytest() { cout<<endl <<m_long <<endl; }public: void testcall(); CBox(float lv,float wv=0,float hv=0):m_long(lv),m_width(wv),m_height(hv) { ... 阅读全文

posted @ 2011-09-06 15:48 天上星 阅读(285) 评论(0) 推荐(0)

2011年8月31日

函数重载与函数模板

摘要: 一、函数重载重载就是函数名相同但实参的类型或数量不同的函数的调用。注意有两种:实参是类型不同或数量不同。(为什么不说形参,因为会有默认值的存在)如得到一数组中最大值,因为有int和double基本的类型,一个函数无法表达int getmax(int intArr[],int len);double getmax(double douArr[],int len);为什么要同名? 主要是方便记忆。如你输入getmax后,编译器会自动给你提示有这样的函数且会把它的形参类型带出来,便于选择。当然你也可以写成不同的名称: getintmax,getdoublemax.多个在一程序中的同名函数就是函数重. 阅读全文

posted @ 2011-08-31 11:44 天上星 阅读(3275) 评论(0) 推荐(0)

定义struct类型

摘要: 看下下面的代码:typedef struct tagUser{ char* pItem; short Age; tagUser* pNext;}User;typedef: 定义一个新类型或为一类型起个别名。struct: 表示为一结构体类型.tagUser:类型名称。以后可以以此类型声明变量,如 tagUser myUser;User: 类型 tagUser的别名,即它们是同种类型,可以这样声明一变量: User myuser;我们在User类型的结构体内会看到pNext的指针,它指向下一个本类型的地址,它的类型为struct tagUser,即我们所说的链表。.如果我们变成以下代码... 阅读全文

posted @ 2011-08-31 10:39 天上星 阅读(3906) 评论(0) 推荐(0)

2011年8月26日

函数指针与返回指针的函数

摘要: 如下两个例子1. int* lpfun(int,int);2. int (*lpfun)(int,int);第一种是我们熟悉的函数指针,即函数的返回值为int类型的指针第二种一定要用括号把*号和lpfun括起来,这种类型与第一种不一样,是指向一种函数地址的指针。这个函数的返回类型是int型,实参也为int型。#include <stdio.h>using namespace std;int* lpfun1(int,int); //声明一个返回指针为int类型的函数int lpfun2(int,int); //普通函数typedef int (*lpfunPointer)(int,i 阅读全文

posted @ 2011-08-26 14:38 天上星 阅读(16282) 评论(0) 推荐(0)

2011年8月16日

动态内存分分配

摘要: 大多数程序在运行时,计算机中会有部分的内存未分配,这些内存叫堆或叫自由存储器。我们可以用new操作符在堆中为特定类型的变量分配空间,返回值是分配给此变量的内存地址。释放分配的空间是用delete操作符。在内存中操作指针比操作变量本身速度更快更有效,特别是对于数组。一 给简单变量分配动态内存如我们要在内存中给一double型变量分配空间,我们可以先声明一个double型指针,然后再给此对象赋值: double* pdata=NULL; pdata=new double; *pdata=3.665;(等同于pdata=new doulbe(3.665);) delete pdata; pdata= 阅读全文

posted @ 2011-08-16 15:55 天上星 阅读(440) 评论(0) 推荐(0)

指针及数组

摘要: 一.指针 我们所申请的变量或数组都分配在内存中,它们在内存中存放的地址值可以被存在另个变量中,即一个变量指向它们在内存中的地址,这个指向内存变量地址的变量即为指针。如变量为 aa的在内存中的地址为0x6859ef.而0x6859ef又存放在bb的变量中,通过访问bb就可以找到aa,这个变量bb就是指向aa的指针。 变量在内存中是根据数据类型的大小分配的,以字节为单位。1.在C++中指针的声明形式为: type* variable=NULL; type *varialble=NULL; type表示类型,*号可以靠近type写也可以靠近varialble写,根据各人喜好。 NULL表示此指针中的 阅读全文

posted @ 2011-08-16 11:00 天上星 阅读(218) 评论(0) 推荐(0)

2011年8月10日

强制类型转换

摘要: 两种强制类型转换: 老式: int a=(int)b; 新式: int a=static_cast<int>(b);即产生一临时变量,这个变量存储b变成int类型的值,且不影响b,把此变量的值赋给a后自动消失。对b没有影响。类型转换分为隐式转换和显式转换。 1. 隐式转换是指编译器自动进行转换, 不用用户指明类型。编译器遵循的原则是把占用空间小的类型扩展为空间大的类型。如: double a=0.0; float b=12.3355; a=b; 编译器会自动把精度为7的浮点型数据转变为精度为15的double类型,这样不会使数据因超过内存空间而溢出。 2. 强制转换表示这个转换是人 阅读全文

posted @ 2011-08-10 17:24 天上星 阅读(306) 评论(0) 推荐(0)

运算符顺序和位运算符

摘要: 位运算符: &(AND):表示二元数全为真时结果为真。 >(OR):或,表示二元数有一个为真时结果为真 ^(EOR):异或。只有二元数全为1时,结果为0.即相同为0 ~:取反。一元操作符,为1时结果为0,为0时结果为1 >>:位右移。即操作数以二进制形式向右边移动的位数。 <<:位左移. 即操作数以二进制形式向工边移动的位数。 它们的格式也可变为: LValue op= RValue; 如: a &=b 等价于 a=a & b; <<和>>操作对于无符号整数相当于 原值乘以2的n次方或原值除于2的n次方,n为移动的位 阅读全文

posted @ 2011-08-10 10:26 天上星 阅读(714) 评论(0) 推荐(0)

导航