自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

arthurkingios的专栏

管却自家身与心,胸中日月常新美。

  • 博客(13)
  • 收藏
  • 关注

原创 《C专家编程》读书笔记(3)

***什么时候数组和指针是相同的*** (1)“表达式中的数组名”就是指针;对数组下标的引用总是可以写成“一个指向数组的起始地址的指针加上偏移量”。例如,假如我们声明:int a[10], *p, i = 2;就可以通过以下任何一种方法来访问a[i]://第一种方法p = a;p[i];//第二种方法p = a;*(p+i);//第三种方法p = a+i;*p;

2007-05-11 20:06:00 996

原创 《C专家编程》读书笔记(2)

 ***数组和指针是如何访问的***标准规定赋值符必须用可修改的左值(为了与数组名区分,数组名也用于确定对象在内存中的位置,也是左值,但它不能作为赋值的对象)作为它左侧的操作数,而其右侧的操作数是地址的内容(右值)。数组和指针的差别:(1)数组只需将起始地址加上偏移地址,再解除引用既可取得数组中的各个元素;而指针需先将自身解除引用以获取所指向对象的地址,再解除引用才可取得所指向对象的内容;

2007-05-10 22:06:00 1193

原创 《C专家编程》读书笔记(1)

 ***C的发展历程***BCPL -> B -> New B -> 早期的C注释:BCPL(Basic Combined Programming Language) 基本组合编程语言B 在BCPL的基础上进行了简化,但由于硬件系统的内存限制,它只允许放置解释器,而不是编译器。它同时保持了BCPL语言无类型的特点,仅有的操作数就是机器的字。New B 能同时解决多种数据类型,采用了编译模式

2007-05-07 22:27:00 1463

原创 “Multithreaded Job Queue”源码阅读笔记

源码见:http://www.codeproject.com/threads/multi_threaded_job_queue.aspInterlockedIncrement、InterlockedDecrement用于对多个线程竞争的公共资源进行排他式的增减1。此例中的lastUserID是父类CJob中的static变量,对于CJob的所有对象有且只有一份,其用于对已分配的编号进行计数,故

2006-11-22 19:16:00 883

原创 《深度探索C++对象模型》读书笔记(7)

***Template的“具现”行为***template class中的任何member都只能通过template class的某个实体来存取或操作。Pointfloat>::Status s;  // okPoint::Status s;  // error如果我们定义一个指针,指向特定的实体,像这样:Pointfloat> *ptr = 0;由于这是一个指向c

2006-10-16 17:24:00 890

原创 《深度探索C++对象模型》读书笔记(6)

***对象的构造和解构***一般而言,我们会把object尽可能放置在使用它的那个程序区段附近,这样做可以节省不必要的对象产生操作和销毁操作。 ***全局对象***全局对象的静态初始化策略包括以下几个步骤:(1)为每一个需要静态初始化的对象产生一个_sti_...()函数,内含必要的constructor调用操作或inline expansions;(2)为每一个需要静态的内存释放操作的对

2006-10-16 12:12:00 667

原创 《深度探索C++对象模型》读书笔记(5)

 ***纯虚拟函数***在设计抽象基类时,需要注意以下几点:(1)不要将destructor声明为pure virtual function;如果将destructor声明为pure virtual function,则设计者一定得定义它。因为每一个derived class destructor会被编译器加以扩展,以静态调用得方式调用其“每一个virtual base class”以及“上一

2006-10-13 13:16:00 838

原创 《深度探索C++对象模型》读书笔记(4)

 ***非静态成员函数(Nonstatic Member Functions)***C++的设计准则之一就是:nonstatic member function至少必须和一般的nonmember function有相同的效率。也就是说,如果我们要在以下两个函数之间作选择:float magnitude3d(const Point3d *this) ...{ ... }float Poi

2006-10-12 16:12:00 927

原创 《深度探索C++对象模型》读书笔记(3)

 ***class大小的计算所引发的思考***在visual C++ 6.0中测试如下代码:#include "iostream"using namespace std;class X ...{};class Y : public virtual X ...{};class Z : public virtual X ...{};class A : public Y,public Z .

2006-10-11 22:11:00 1118

原创 《深度探索C++对象模型》读书笔记(2)

***Default Constructor的建构操作***default constructor仅在编译器需要它时,才会被合成出来。通常来说,由编译器合成出来的default constructor是没啥用的(trivial),但有以下几种例外:(1)带有“Default Constructor”的Member Class Object如果一个class没有任何constructor,但它内含一

2006-10-10 14:31:00 773

原创 《深度探索C++对象模型》读书笔记(1)

***C++对象模型***在C++中,有两种class data members:static和nonstatic,以及三种class member functions:static、nonstatic和virtual。已知下面这个class Point声明:class Point ...{public:Point(float xval);virtual ~Point();float x(

2006-10-09 22:37:00 1041

原创 C++中用户定义的转换

看到《深度探索C++对象模型》的第21页,在其谈到C struct在C++中的一个合理用途时,看到了C++中用户定义的转换的运用。因而回头将《C++ Primer》中关于用户定义的转换的一些细节温习了一下。(1)         用户定义的转换的必要性:我们希望能够在SmallInt对象和其他SmallInt对象或者内置算术类型的对象之间进行加减操作,我们要通过提供6个SmallInt操作

2006-10-09 15:16:00 1209

原创 C++中的类静态成员和静态成员函数

今天刚开始看《深度探索C++对象模型》,刚看到第一章,竟然发现自己对类静态成员和静态成员函数还不够了解。查看了《C++ Primer》后,有以下几点体会:(1)         为什么需要类静态成员?有时候某个类的多个对象需要访问一个全局对象,在这种情况下“提供一个全局对象”比“每个类都维持一个独立的数据成员”要更为有效。而类静态成员与全局变量相比,又有两点好处:(a)不存在与程序中其他全

2006-10-09 12:39:00 818

空空如也

空空如也

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

TA关注的人

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