总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解.今天比较闲,我上网查了查,光是百度百科词条“句柄”中就有好几种说法,很多叙述还是错误的,天知道这些误人子弟的人是想干什么. 这里我列举词条中的关于句柄的叙述不当之处,至于如何不当先不管,继续往下看就会明白: 1.windows 之所以要设立句柄,根本上源于内存管理机制的问题—虚拟地址,简而言之数据的…
#include <iostream> using namespace std; class A { public: int i; int j; } int main() { const A* a = new A(); A* a1; a1 = a; } 这个是有道理的,能够这么做的话,const中内容就会被改变.…
命题1. 在C++ 中 const T a 与 T const a 是一样的, 表示a是一个T类型的常量. 测试: 一. 形参定义为引用类型的常量 在函数传参时,形参若定义为 const T& x ,则表示实参是一个引用类型,并且无法在这个函数中更改x的值.由命题1知,它等价于 T const& x . 在不同的书中可能会有不同的写法: 测试:   二.指向常量的指针与指针类型的常量 指向常量的指针定义为 const T *p , 表示 p是指向常量的指针,p也可以指向变量,但是通过p只能…
先看下面六种写法: . const int p; . const int *p; . int const* p; . int * const p; . const int * const p; . int const * const p; 那么我们应该怎么区分上面的写法到底是指向常量的指针还是const指针(表示指针本身是常量)呢? 一个简便方法:从由往左读,遇到p就替换为“p is a”,遇到*就替换为“point to”,其余不变. 下面我们来一个一个看: . const int p; //…
这一点与指向成员的指针类似,其实现可能更加复杂,因为成员函数同时还存在虚拟函数,需要动态绑定执行动作.当然这种属性是属于函数本身的,此处表达的是指针不涉及函数的属性问题. 1: class shape 2: { 3: public: 4: // void moveTo(point newLocation); 5: bool validate(); 6: //… 7: } 8:   9: class circle:: public shape 10: { 11: public: 12: //… 1…
const对象: const对象声明时必须赋初值,该值在编译阶段确定,不可在程序中修改. const修饰符既可放在类型名前也可放在类型名后,通常放在类型名前.不过放在类型名后易于理解. const int a = 7; int b = 8; int array[a];//合法, a是const变量,值在编译阶段确认 int arr[b];  //不合法,b是个普通变量,值没有在编译阶段确定 指向const对象的指针: 可理解为“自认为指向const对象的指针”,其实际所指向的对象不一定是cons…
const char * myPtr = &char_A;//指向常量的指针 char * const myPtr = &char_A;//常量的指针 const char * const myPtr = &char_A;//指向常量的常量指针 1.指针常量 **从字面意思可以看出,指针是一个常量,也就是地址不能被修改. #include <iostream> using namespace std; void main() { int a = 10; int cons…
C++指向常量的指针和常指针 指向常量的指针 通常情况下,可以通过指针去修改指针指向的内容.但是在某些情况下,只希望通过指针去访问指针指向的内容,不想修改.比如只想通过树根结点的指针去遍历输出树中所有结点的内容,不修改.这时候就可以使用指向常量的指针,防止意外修改. 看下面的代码 const int* u; const int* u;可以读作:u是一个指针,该指针指向不能通过该指针修改的内容.重点在不能通过该指针修改的内容,也就是说u指向的内容不能通过u来修改,但是可以通过别的方法修改.看下面的…
[转]作者:xwdreamer   出处:http://www.cnblogs.com/xwdreamer 对于指针和常量,有以下三种形式都是正确的: const char * myPtr = &char_A;//指向常量的指针 char * const myPtr = &char_A;//常量的指针 const char * const myPtr = &char_A;//指向常量的常量指针 下面依次对这三种类型进行介绍. 因为*操作符是左操作符,左操作符的优先级是从右到左,对于…
1.常量指针 定义:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针,简称常量指针. 声明:const int * p; int const * p; 注:可以将一个常量的地址赋值给一个对应类型的常量指针,因为常量指针不能够通过指针修改内粗数据.只能防止通过指针引用修改内存中的数据,并不保护指针所指向的对象. 2.指针常量 定义:指针常量是指指针所指向的位置不能改变,即指针本身是一个常量,但是指针所指向的内容可以改变. 声明:int * const p=&a; 注…