c++(case)
小扁稻
这个作者很懒,什么都没留下…
展开
-
默认参数值的提供
关于默认参数值的提供有两个不甚直观的规则,第一个规则是默认值的决议(resolve)操作由最右边开始执行,如果我们为某个参数提供了默认参数,那么这个参数右边的所有参数都必须具有默认参数,下面的属于非法void display(ostream &os=cout,const ve原创 2011-10-17 12:35:39 · 782 阅读 · 0 评论 -
删除指针两次
会发生意想不到的灾难。假设有一个指针变量p 第一次执行delete p 可以安全的释放对象*p 而且p指向的内存会安全地返回到堆上,在没有随后的返回那个指针new的情况下第二次相同的指针会被传递到delete 过去曾经是*p中的对象现在被传递到析构函数(这可能是灾难性的)而且原创 2011-10-19 13:54:09 · 1070 阅读 · 0 评论 -
数组参数
摘自《c++ primer》在c++里面数组永远不会按值传递,它是传递的第一个元素(准确的说是第0个)的指针下面声明void put(int [10])被编译器视为void put(int*)数组的长度与参数声明无关因此下列三个声明是等价的:void putValues( int* );void putValues( int[] );void putValues(原创 2011-10-22 00:05:34 · 353 阅读 · 0 评论 -
函数返回类型
c++ 一种强类型的语言(Strong typed) 每个函数调用的实参在编译期间都要经过类型的检查(type-checked)若参数类型与相应的参数类型不匹配,如果有可能就会有一个隐式的类型转换如果不可能进行隐士类型转换或者实参的个数不正确,就会产生一个编译错误。这就是函数必须先声明再使用的原因。编译器必须根据函数参数表对函数实参执行类型检查。原创 2011-10-21 16:23:05 · 301 阅读 · 0 评论 -
参数传递按值传递
这篇文章里面是c++ primer 里面的所有的函数都使用在程序运行栈(run-time stack)中分配的内存区。该存储区一直保持与该函数相关联,直到函数结束为止。那是存储区将自动释放以便重新使用。该函数的整个存储区被称为活动记录(activation record) 系统在函数的活动记录中为函数的每个参数都提供了存储区。参数的存储长度由它的类型来决定。参数传递是指用函数调用的实参值来原创 2011-10-21 16:45:09 · 491 阅读 · 0 评论