自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

转载 友元函数

问题的提出   我们已知道类具备封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程式中的其他函数是无法访问私有成员的。非成员函数能够访问类中的公有成员,但是假如将数据成员都定义为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,特别是在对某些成员函数多次调用时,由于参数传递,类型检查和安全性检查等都需要时间开销,而影响程式的运行效率。   为了解决上述问题,提出一种

2013-07-04 09:34:31 665

转载 enum in c++ 2

参考文献: [1]C++程序设计语言(特别版), 裘宗燕译, 机械工业出版社 [2]C++ Primer (3rd Ed.), S.B. Lippman and J. Lajoie, 人民邮电出版社 1、枚举enum的用途浅例       写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rain

2013-07-02 17:52:21 471

转载 enum in C++

很多初学者对枚举(enum)感到迷惑,或者认为没什么用,其实枚举(enum)是个很有用的数据类型。 枚举类型的使用方法 一般的定义方式如下: enum enum_type_name { ENUM_CONST_1, ENUM_CONST_2, ... ENUM_CONST_n } enum_variable_name; 注意:enum_type_name 是自定义的一种数据数

2013-07-02 17:34:18 690

转载 switch case是否需要加括号

switch(lParam)  {  case WM_LBUTTONUP:     AfxMessageBox(_T("ok!"));     this->ShowWindow(SW_SHOW);     break;  case WM_RBUTTONUP:   {      LPPOINT lpoint=new tagPOINT;      ::GetCursorPos(lp

2013-06-25 13:39:53 5132

转载 (int &)问题

#include  using namespace std;  int main(int argc, char* argv[])  {          float a = 1.0f;          cout      cout      cout      cout            cout      float b=0.0f;         cout

2013-06-14 15:24:27 436

转载 c++虚函数表解析

对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一

2013-06-14 14:06:00 481

原创 C++ 多态(polymorphism)的例子

关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。 class ClxBase { public:     ClxBase() {};     virtual ~ClxBase() {};       virtual void DoSomething() { cout };   class ClxDerived : publ

2013-06-14 13:34:58 1158

原创 little endian & big endian

检查CPU是否为大端或小端 一般而言普遍的方法是利用联合体存储数据的顺序,如 int checkCPU() {   union w   {     int a;     char b;   }c;   c.a = 1;   return (c.b == 1);  // 小端返回TRUE,大端返回FALSE } linux源代码 static union

2013-06-08 17:16:09 430

转载 与“零值”的比较

1,BOOL与零值的比较 if( flag ) if( !flag ) 2,float与零值的比较 const float EPS = 0.00001; if ((x >= - EPS) && (x 3, char与零值的比较 if (p == NULL) if (p != NULL)

2013-06-05 17:00:09 475

转载 类string的构造函数、析构函数和赋值函数

class String {   public:     String(const char *str = NULL);           //普通构造函数     String(const String &other);              //拷贝构造函数     ~ String(void);                           //析构函数     St

2013-06-05 16:50:05 533

原创 双链表操作 written by my self

struct student {       int data;       struct student *next;       struct student *pre; }dnode; 1, 删除节点 dnode *del(dnode *head, int num) {       dnode *p1;       p1=head;       while(

2013-06-04 23:47:23 444

原创 单链表操作 written by myself

struct student {     int num;     struct student *next; }node; 1, 建立单链表 node * create() {     node * head, *p, *s;     int x;     bool flag = TRUE;     p = head = NULL;     while

2013-06-04 22:21:00 480

转载 some C++ summary 2

1. 纯虚函数如何定义?使用时应注意什么?抽象类是如何定义的?抽象类能否实例化? virtual void f()=0; 是接口,子类必须要实现 如果一个类含有至少一个纯虚函数,这个类称为抽象类(abstract class). 抽象类不能实例化 2.数组和链表的区别 数组:数据顺序存储,固定大小 链表:数据可以随机存储,大小可动态改变 3. 已知一

2013-06-04 15:39:26 550

原创 some C++ summary

1, 头文件(包括.h和.hpp)里面有    #ifndef __SOMEFILE_H__      #define __SOMEFILE_H__    ... ... //声明,定义    #endif 加入这些是防止头文件被重复include. 需要注意的是宏(__SOMEFILE_H__)在每个头文件里面要不同,所以一般而言是大写的文件名 当该头文件多次被包含的时候,第一次#

2013-06-03 16:08:48 560

转载 memset()的效率以及源码分析

void *memset(void *s, int ch, size_t n); 作用:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作。 不知道有没有像我一样把memset当作万能的初始化工具,例如: int arr[n]; memset(arr,1,n*sizeof(int)); 这样得到的a

2013-05-28 12:32:25 484

原创 四种强制转换方式

1 reinterpret_cast 'reinterpret_cast'转换一个指针为其它类型的指针。它也允许从一个指针转换为整数类型。反之亦然。(译注:是指针具体的地址值作为整数值?) 这个操作符能够在非相关的类型之间转换。操作结果只是简单的从一个指针到别的指针的值的二进制拷贝。在类型之间指向的内容不做任何类型的检查和转换。 如果情况是从一个指针到整型的拷贝,内容的解释是系统相关的,所以

2013-05-28 12:30:21 794

原创 要处理

一、关于指针的思考 指针的基本概念: int a[100];   int *p;   p=a;   以上代码有一些基本的等价,需要铭记。 p等价于&a[0]等价于a *p等价于a[0]等价于*a *(p+1)等价于p[1]等价于a[1]等价于*(a+1) 但是,如果对数组名取址呢? int a[]={1,2,3};

2013-05-28 12:29:38 563

原创 初始化列表

1)基本概念,初始化列表的形式 #include  using namespace std;   class MemberInitializationList { private:         int i;         int j; public:         MemberInitializationList(int val) :j(val), i(j)

2013-05-28 12:28:26 484

原创 delete []m_data

String::~String(void) {   delete [ ] m_data;  // 由于m_data 是内部数据类型,也可以写成 delete m_data; } 这是为了与前面的new相对应 如果前面的new格式为char * a=new char[12];(注意,有[]) 则后面delete就要有[]; 如果前面new没有[],则后面delete也不需要

2013-05-28 12:27:37 1088

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除