文章分类 -  C++

摘要:部分转载:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/19/2598815.html C/C++中static关键字作用总结 1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可) 当同时编译多个文件时,所有 阅读全文
posted @ 2017-04-25 16:48 ren_zhg1992 阅读(198) 评论(0) 推荐(0)
摘要:有时候类里面定义了很多int,char,struct等c语言里的那些类型的变量,我习惯在构造函数中将它们初始化为0,但是一句句的写太麻烦,所以直接就memset(this, 0, sizeof *this);将整个对象的内存全部置为0。对于这种情形可以很好的工作,但是下面几种情形是不可以这么使用的: 阅读全文
posted @ 2017-04-20 11:42 ren_zhg1992 阅读(1592) 评论(0) 推荐(0)
摘要:strcpy() 原型声明:char strcpy(char dest, const char *src); 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向de 阅读全文
posted @ 2017-04-13 17:25 ren_zhg1992 阅读(707) 评论(0) 推荐(0)
摘要:编译器一般使用堆栈来实现函数调用。当一个函数被调用时,(进程内核对象为其在进程的地址空间的堆栈部分)分配一定的栈内存给函数使用,函数堆栈用于: 1.在进入函数前,保存“返回地址”和环境变量。返回地址是指该函数结束后,从进入该函数之前的哪个地址继续执行下去。 2.在进入函数之后,保存局部变量等。 在W 阅读全文
posted @ 2017-04-12 17:00 ren_zhg1992 阅读(1831) 评论(0) 推荐(0)
摘要:昨天在看牛客网上一道题,实现一个简单的智能指针,发现写出来有困难,之前也一直没有实现过。 智能指针是一种资源管理类,通过对原始指针进行封装,在资源管理对象进行析构时对指针指向的内存进行释放;通常使用引用计数方式进行内存管理。一个基本的实现如下: 输出如下: 注意: 在Share类中的计数成员 cnt 阅读全文
posted @ 2017-04-10 21:20 ren_zhg1992 阅读(420) 评论(0) 推荐(0)
摘要:二、Const的使用 1、定义常量(1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。 TYPE const ValueName = value; const TYPE ValueName = value; (2)将con 阅读全文
posted @ 2017-04-06 11:32 ren_zhg1992 阅读(176) 评论(0) 推荐(0)
摘要:今天在做《面试笔试宝典》的时候,遇到了初始化列表和构造函数初始化区别的问题。之前只是知道有些情况必须用初始化列表,并且初始化列表的效率要高。但是要是说两者的区别,还真是没有探究过。网上搜了一些博客,对我很有帮助,但是感觉没有讲到自己异或的地方。所以自己实践了一下。 首先,我们来把两者的一般原型给出: 阅读全文
posted @ 2017-03-25 12:08 ren_zhg1992 阅读(5799) 评论(0) 推荐(0)
摘要:c++中异常处理的关键字有:throw try catch。c++中的异常处理机制只能处理有throw捕获的异常,没有捕获的将忽略。 抛出异常即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为: throw 表达式 如果在try语句块的程序段中 阅读全文
posted @ 2017-03-22 10:01 ren_zhg1992 阅读(827) 评论(0) 推荐(0)
摘要:首先,new和sizeof都是运算符,而strlen是函数。 new和delete是运算符,重载new和delete是可能的。这样做的原因是,有时希望使用某种特殊的动态内存分配方法。例如,可能有些分配子程序,他们的堆已耗尽,自动开始把一个磁盘文件当虚存储使用,或者用户希望控制某一片存储空间的分配等。 阅读全文
posted @ 2017-03-21 16:52 ren_zhg1992 阅读(1556) 评论(0) 推荐(0)
摘要:new和delete运算符用于动态分配和撤销内存的运算符 new用法: 1. 开辟单变量地址空间 1)new int; //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a. 2)int *a = new int( 阅读全文
posted @ 2017-03-21 15:21 ren_zhg1992 阅读(346) 评论(0) 推荐(0)
摘要:不多说,看代码 输出的结果为: 7 4 4 4 阅读全文
posted @ 2017-03-21 11:07 ren_zhg1992 阅读(93) 评论(0) 推荐(0)
摘要:这两个名字不同当然所代表的意思也就不同。我刚开始看到这就吓到了,主要是中文太博大精深了,整这样的简称太专业了,把人都绕晕了。从英文解释或中文全称看就比较容易理解。 指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针 数组指针:a pointer to an a 阅读全文
posted @ 2017-03-21 11:00 ren_zhg1992 阅读(94) 评论(0) 推荐(0)
摘要:静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的 阅读全文
posted @ 2017-03-21 10:54 ren_zhg1992 阅读(115) 评论(0) 推荐(0)
摘要:今天在看《程序员面试笔试宝典》时,看到变量的重定义,想起之前传智中有讲过,不过有点模糊了,现在来巩固下。 全局变量、静态全局变量、静态局部变量和局部变量的区别 变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。 (1) 按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态 阅读全文
posted @ 2017-03-21 10:39 ren_zhg1992 阅读(1751) 评论(0) 推荐(0)
摘要:什么是友元类 当一个类B成为了另外一个类A的“朋友”时,那么类A的私有和保护的数据成员就可以被类B访问。我们就把类B叫做类A的友元。 友元类能做什么 友元类可以通过自己的方法来访问把它当做朋友的那个类的所有成员。但是我们应该注意的是,我们把类B设置成了类A的友元类,但是这并不会是类A成为类B的友元。 阅读全文
posted @ 2017-03-20 22:31 ren_zhg1992 阅读(6451) 评论(0) 推荐(2)
摘要:1.友元函数的简单介绍 1.1为什么要使用友元函数 在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了 使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保 阅读全文
posted @ 2017-03-20 22:29 ren_zhg1992 阅读(168) 评论(0) 推荐(0)
摘要:本人在学习Qt的时候发现了一个非常有趣的现象。有很多函数的调用方法都写成了如下的形式: 这令小弟着实不懂。在上面这段代码中,第一个对象调用它的成员函数func()是完全没有问题的,但是后面那个func2()就奇怪了。我们只知道,点运算符(.)的作用就是调用对象的成员,但是如果按照上面这个程序的字面意 阅读全文
posted @ 2017-03-20 21:50 ren_zhg1992 阅读(2153) 评论(0) 推荐(0)
摘要:转:http://www.cnblogs.com/gw811/archive/2012/10/20/2732687.html C++引用详解 引用的概念 引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名; 如下:定义引用r 阅读全文
posted @ 2017-03-15 16:27 ren_zhg1992 阅读(224) 评论(0) 推荐(0)
摘要:今天在《剑指offer》用deque时,看到 std::deque<BinaryTreeNode*> dequeTreeNode; BinaryTreeNode *pNode = dequeTreeNode.front(); front() 是返回双向队列的第一个元素的引用 可以把一个引用赋值给一个 阅读全文
posted @ 2017-03-15 16:21 ren_zhg1992 阅读(148) 评论(0) 推荐(0)
摘要:类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员;2.进入构造函数后在构造函数中执行一般赋值与计算。 使用初始化列表有两个原因:原因1.必须这样做: 《C++ Primer》中提到在以下三种情况下需要使用初始化成员列表: 情况一、需要初始化的数据成员是对象的情况( 阅读全文
posted @ 2017-03-07 16:18 ren_zhg1992 阅读(1227) 评论(0) 推荐(0)