指向函数的指针声明和指向数组的指针声明容易混淆,原因在于函数和数组修饰符的优先级比指针修饰符的优先级高,因此通常需要使用圆括号. int *f1( );//一个返回值为 int* 的函数 int ( *f2 )( );//一个指针,指向一个返回值为 int 的函数 具有高优先级的数组修饰符存在同样的问题: const int N = 12; int *a1[ N ];//一个具有N个大小的数组,每个元素是 int * int ( *ap1 ) [ N ];//一个指针,指向一个具有N个 int…
有时候,指明一些特定类的对象不应该被分配到堆(heap)上是个好主意.通常这是为了确保该对象的析构函数一定会得到调用.维护对象本身(body object)的引用计数的句柄对象(handle object)就属于这种对象.具有自动存储区的类的局部对象,其析构函数会被自动调用(exit 或abort发生的非正常的程序终止情况出外),具有静态存储区的对象依然(abort除外),而堆分配的对象则必须被显示的销毁. 指明对象不应该被分配到堆上的方式之一,是将其内存分配定义为不合法: #include<i…
有时需要一些行为类似于函数指针的东西,但函数指针显得笨拙.危险而且过时(让我们承认这一点).通常最佳方式是使用函数对象(function object)取代函数指针. 与智能指针一样,函数对象也是一个普通的类对象.智能指针类型重载 -> 和 * (可能还有 ->* 和 .*)操作符,来模仿指针的行为:而函数对象类型则重载函数调用操作符“()”,来创建类似于函数指针的东西.考虑如下函数对象,它的每次调用都计算众所周知的斐波拉切数列(1,1,2,3,5,8,13,...)的下一个元素值: clas…
一.数组: 1.js是弱语言,js中的数组定义时:不用指定数据类型.不用功指定数组长度:数组可以存储任何数据类型的数据 2.数组定义的[ ] 的实质: [] = new Array(); {} = new Object(); // = new RegExp(); 3.创建数组的语法: var arr = [值1, 值2, 值3]; var arr = new Array(值1, 值2, 值3); var arr = new Array(值1);//只有一个值时,其为数组的长度,赋值需要一个一个进…
这一点与指向成员的指针类似,其实现可能更加复杂,因为成员函数同时还存在虚拟函数,需要动态绑定执行动作.当然这种属性是属于函数本身的,此处表达的是指针不涉及函数的属性问题. 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…
调用一个成员函数,涉及三个步骤:第一步,编译器查找函数的名字:第二部,从可用候选者中选择最佳匹配函数:第三步,检查是否具有访问该函数的权限. #include<iostream> using namespace std; class B{ public: void f(double para){ cout<<"B::f"<<para<<endl; } }; class D:public B{//void f(int para){}; //…
字符串的拓展 1.ES6为字符串添加了遍历器接口,因此可以使用for...of循环遍历字符串 2.字符串新增的 includes().startsWith().endsWidth() 三个方法用于判断某一字符串是否包含于另一字符串 includes():返回布尔值,表示源字符串中是否包含参数字符串. startsWith():返回布尔值,表示参数字符串是否在源字符串的头部. endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部. 3.新增 repeat() 方法, 该方法返回一个…
本文章属于个人对es6一些比较常用的语法的总结归纳,其主要参考阮一峰大神的<a href="http://es6.ruanyifeng.com//">ECMAScript6入门</a> ,如有哪里理解不对或者不透彻的地方,还请批评指正~ ps:推荐使用es6在线调试 <b>let 和 const</b> 1.let声明的变量只有在当前代码块成效,而且不具备变量提升(即代码块中有let声明的变量提前使用会报错); { console.log…
我们可以量身定制 operator new 和 operator delete 用于某个类类型,而不是必须使用标准版的 operator new 和 operator delete. 注意:我们不可以对 new  和 delete 操作符做什么,它们的行为是固定的.但是我们可以改变 它们所调用的 operator new 和 operator delete .做这件事的最佳方式是为类声明 operator new 和 operator delete成员函数: class Handle { pub…
一.简单了解一下JavaScript(js) 1.什么是js? js:是网景公司开发的,是基于客户端浏览器, 面向(基于)对象.事件驱动式的页面脚本语言. 2.什么场景下使用到js? 表单验证.页面特效.Ajax.小游戏 3.js快速入门: (1)直接使用标签script,然后在script标签下编写js代码 (2)通过标签script的src引入外部文件 4.js语句的细节(语句的:可加可不加): js中的语句没那么严格,每个语句可以加; 也可以不叫; (建议是加,因为你写其他语言的语句是要求…