- 博客(20)
- 资源 (9)
- 问答 (41)
- 收藏
- 关注
原创 C++ delete的三种面貌
一般来说,使用new申请空间时,是从系统的“堆”(heap)中分配空间。申请所得的空间的位置时根据当时的内存的实际使用情况决定的。但是,在某些特殊情况下,可能需要在程序员指定的特定内存创建对象,这就是所谓的“定位放置new”(placement new)操作。定位放置new操作的语法形式不同于普通的new操作。例如,一般都用如下语句A* p=new A;申请空间,而定位放置new操作则使用如下语句A
2015-10-30 17:03:56 8047 2
原创 C++ new 与 delete 的使用规范
C++ 的动态内存管理是通过 new 和 delete 两个操作来完成的,即用 new 来申请空间,用 delete 来释放空间。在使用 new 和 delete 时,注意以下原则。
2015-10-30 15:37:44 3434
原创 C++ 函数模板与分离编译模式
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件连接起来形成单一的可执行文件的过程成为分离编译模式。2.使用模板在连接时出错在C++程序设计中,在一个源文件中定义某个函数,然后在另一个源文件中使用该函数,这是一种非常普遍的做法。但是,如果定义和调用一个函数模板时也采用这种方式,会发生编译
2015-10-30 00:56:14 6962 8
原创 C++ 将模板申明为友元
严格来说,函数模板(类模板)是不能作为一个类的友元的,就像类模板之间不能发生继承关系一样。只有当函数模板(或类模板)被实例化之后生成模板函数(或模板类),该函数(或类)才能作为其他的类的友元。为了叙述的方便,我们也称一个函数模板(或类模板)是一个类或类模板的友元,其实真正的含义是函数模板(或类模板)被实例化后生成的模板函数(模板类)作为类(或模板
2015-10-29 17:13:22 2125 2
原创 C++函数申明对函数模板实例化的屏蔽
C++函数匹配顺序C++语言引入模板机制后,函数调用的情形显的比C语言要复杂。当发生一次函数调用时,如果存在多个同名函数,则C++编译器将按照如下的顺序寻找对应的函数定义。
2015-10-29 14:06:54 2433
原创 C++ 模板实例化与调用
模板的实例化指函数模板(类模板)生成模板函数(模板类)的过程。对于函数模板而言,模板实例化之后,会生成一个真正的函数。而类模板经过实例化之后,只是完成了类的定义,模板类的成员函数需要到调用时才会被初始化。模板的实例化分为隐式实例化和显示实例化。......
2015-10-29 13:13:41 14838
原创 什么是野指针
指向非法的内存地址指针叫作野指针(Wild Pointer),也叫悬挂指针(Dangling Pointer),意为无法正常使用的指针。
2015-10-28 23:44:48 6406 1
原创 C++ 类成员指针
成员指针是 C++ 引入的一种新机制,是指向类成员的指针,你可以使用它们来访问类的成员变量和成员函数,包括公有、私有和保护成员。它的申明方式和使用方式都与一般的指针有所不同。成员指针分为成员变量指针和成员函数指针。
2015-10-28 16:54:53 7832 8
原创 C++对象产生和销毁的顺序
C++中,如果对象是用new操作生成的,那么它的空间被分配在堆(Heap)上,只有显示地调用delete(或delete[])才能调用对象的析构函数并释放对象的空间。那么,在程序的其他存储区(全局/静态存储区,stack区)上的对象是依据什么样的顺序产生和销毁的呢?
2015-10-27 15:15:44 5530
原创 C++ 类的设计与实现规范
规范是一种规定,遵守这种规定能够带来长远的利益,而违反这种规定却不会立即收到惩罚。程序设计的规范是人们在长期的编程时间中总结出来的,深入理解中这些规范需要认真的思考和大量的实践 。不符合程序设计规范的代码也能通过编译并运行。但是从长远来看,代码存在可读性差、安全性低、不易扩展、不易维护等问题。
2015-10-27 10:39:30 4090 4
原创 C++ 嵌套类与局部类
1.1嵌套类的定义在一个类体中定义的类叫作嵌套类。拥有嵌套类的类叫外围类。1.2嵌套类的作用定义嵌套类的初衷是建立仅供某各类目的在于隐藏类名,减少全局的标识符,从而限制用户能否使用该类建立对象。这样可以提高类的抽象能力,并且强调了两个类(外围类和嵌套类)之间的主从关系。
2015-10-26 23:29:35 4161 2
原创 C++函数指针简介
1.函数指针简介1.1函数指针的用法简单回顾函数指针的用法。#include <iostream>using namespace std;int add(int i,int j){ return i+j;}int main(){ //用法一 int(*addP)(int,int)=add; int tmp=addP(2,3); //或者 //
2015-10-24 12:33:33 1689
原创 C++如何禁止函数的传值调用
按照参数形式的不同,C++应该有三种函数调用方式:传值调用、引用调用和指针调用。对于基本数据类型的变量作为实参进行参数传递时,采用传值调用与引用调用和指针调用的效率相差不大。但是,对于类类型来说,传值调用和引用调用之间的区别很大,类对象的尺寸越大,这种差别越大。传值调用与后面两者的区别在于传值调用在进入函数体之前,会在栈上建立一个实参的副本,而引
2015-10-24 09:13:08 1907
原创 C++函数调用时堆栈的变化情况
函数的正常运行必然要利用堆栈,至少,函数的返回地址是保存在堆栈上的。函数一般要利用参数,而且内部也会用到局部变量,在对表达式进行求值时,编译器还会生成一些无名临时对象,这些对象都是存放在堆栈上的。下面以Visual C++编译器为例进行研究。
2015-10-22 22:29:49 4048
原创 C++ 关于 main 函数的几点说明
main函数是C++程序的入口函数,C++标准要求main()函数的返回值类型为int。1.函数内并可以不出现return语句当main()函数的返回值为int,而函数内并没有出现return语句时,同样可以通过编译并正常运行。这是因为编译器在main()函数的末尾自动添加了return 0;的语句。所以,main()函数是C++程序经过特殊处理的函数。
2015-10-22 12:49:18 11072 3
原创 致我唯一的kiyoumi
过去像溪流的水向东流去融入大海归于平静 现在遇到了朝阳般的你黑暗里给我希望的光照亮我脚下曲折的路 有一天黑发因褶皱褪去火炉边头发白了你依偎在我怀里我还会在你耳边说起年少时的点点滴滴 窗台雪一生情一朝相恋一世心随今生若已末来生续今缘
2015-10-18 23:52:49 1590
原创 心雨
钟摆滴答,夕阳褪去最后一丝嫣红。秋风肃起,池塘的水皱起满脸心愁。昏沉的灯光照不亮窗外的夜,想去寻找,却不知道你在什么地方。多想回到从前,拨通你的电话,跟你说,我在学校一切都好。你拿起我的录取通知书,露出欣慰的笑。天还没亮,你就忙碌在厨房,怕我上学迟到。穿着你为我缝制的衣裳,卧在你怀里,进入梦乡。睁开双眼,悲凉的叶铺满了街,从前的绿
2015-10-10 22:03:42 1583
原创 分离编译模式简介
分离编译模式源于C语言,在C++语言中继续沿用。简单地说,分离编译模式是指:一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件连接起来形成单一的可执行文件的过程。
2015-10-03 16:54:58 2269
原创 C++ 头文件的作用和用法
示例代码编译运行环境:Windows 64bits+VS2017+Debug+Win32。头文件是 C/C++ 程序不可或缺的组成部分,我们需要了解头文件的作用和相关规范。
2015-10-03 13:03:26 43662 6
tinyxml2+示例代码+介绍文档
2015-09-26
HTML 如何设置图片宽高分别为原宽高的不同比例?
2020-08-22
Google C++编程风格指南中6.10节流中不支持字符串操作符重新排序 什么意思
2018-08-05
C++模板元编程和编写模板有什么区别?
2018-06-17
g++ -S将源码编译成汇编代码,使用的是哪个工具?
2018-06-11
从长度为n的数组中找出同时满足下面两个条件的所有元素,时间复杂度为O(n)。
2018-05-28
为什么C++局部数组变量地址间隔是16字节的倍数?
2018-05-17
缓冲溢出,为什么不报错?
2018-05-16
RLF、HRLF控制字符到底是什么
2018-05-10
printf关于浮点数的四舍五入的奇怪问题?
2018-05-09
stringstream的输入与输出的用法
2018-03-19
使用JS如何获取剪贴板内容
2018-03-06
Linux命名管道为什么叫FIFO?
2018-02-07
Linux下printf与wprintf不能同时使用?
2018-01-15
C标准库函数setvbuf的名称全称
2018-01-15
mysql count distinct 加条件
2017-06-15
awk如何获取除最后一行的所有行?
2017-05-19
rz命令如何上传文件夹
2017-05-07
CSS浮动为什么不会遮盖同级元素
2015-09-17
Linux下系统调用execl会等待一段时间才执行指定的可执行程序?
2015-09-11
为什么 Go range slice 时通过下标和值拷贝的性能是一样的?
2022-03-17
反向代理的上游服务指的是什么?
2021-03-12
Golang 接口类型可以有数据成员吗
2020-12-02
GoLand 如何自动批量换行
2020-10-07
Golang 如何进行标准错误输出
2019-12-24
git branch -dr origin/<branchname> 无法删除远端分支
2019-09-16
golang main包可以被import吗
2019-06-11
golang小数默认是float32还是float64?
2019-05-28
golang const 可以修饰函数形参吗
2019-05-28
ldconfig命令全称是什么呢?
2019-04-02
golang的struc成员后跟字符串有什么作用?
2019-03-15
Linux中 链接器 ld 命令的全称是什么英文单词?
2019-03-12
ssh命令默认端口如何查看
2019-02-15
ssh客户端为什么不指定端口也可以登录成功
2019-02-15
C/C++的预处理文件的后缀为什么约定为.i
2019-01-24
go为什么不能获取字符串某个字符地址?
2019-01-13
date命令将时间戳转为可读时间为什么需要加@符号
2018-12-06
GNU C++定义对象时对象名称被括号包围且前面有个下划线是什么意思
2018-10-09
git merge可以操作远端分支吗?
2018-08-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人