C/C++
寻玉
这个作者很懒,什么都没留下…
展开
-
使用非标准分隔符
名称:使用非标准分隔符 功能:当输入以指定字符(:;,.等)分隔的字符串时,可以把这些指定字符(:;,.等)作为“空白符”处理,这样可以输出以空白符(空格、换行等)和指定字符为分隔的单词。例如:输入:as planned,the guests arrived;then, 则输出arrived as guests planned the then 来源:C++程序设计原理与实践11.7 时间:原创 2017-08-16 17:01:29 · 312 阅读 · 0 评论 -
C++类构造函数初始化列表
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:class CExample {public: int a; float b; //构造函数初始化列表 CExample(): a(0),b(8.8) {} //构造函数内部赋值 CExample() {转载 2017-11-15 11:40:26 · 155 阅读 · 0 评论 -
C++ 子类对象当父类对象使用
子类对象当父类对象使用1⃣️把子类对象直接赋值给父类对象(等号左边是父类对象,等号右边是子类对象) 子类对象赋值给父类对象,仅仅把继承自父类部分成员函数赋值给父类对象 赋值完成后等号左边依然是一个父类对象 Derived d; Base b; b=d;//把子类对象d当成父类对象来使用 (父类对象不能赋值给子类对象,也就是说父类对象不能当成子类对象使用) 2⃣️父类的引用指向子类转载 2017-11-15 15:35:20 · 5196 阅读 · 0 评论 -
得到控制台窗口的句柄
1.调用 GetConsoleTitle() 来保存当前的控制台窗口标题。 2.调用 SetConsoleTitle() 来将控制台标题更改为一个唯一的标题。 3.调用 Sleep(40),以确保已更新窗口标题。 4.调用 FindWindow(NULL, uniquetitle),以获取 HWND,此调用将返回 HWND, 如果操作失败,将返回 NULL。 5.从步骤 1 中,若要恢复原始转载 2017-12-11 10:47:32 · 645 阅读 · 0 评论 -
关于C++中的前置声明
在编写C++程序的时候,偶尔需要用到前置声明(Forward declaration)。下面的程序中,带注释的那行就是类B的前置说明。这是必须的,因为类A中用到了类B,而类B的声明出现在类A的后面。如果没有类B的前置说明,下面的程序将不同通过编译,编译器将会给出类似“缺少类型说明符”这样的出错提示。 代码一:// ForwardDeclaration.h#include <iostream>u转载 2017-12-07 20:10:09 · 230 阅读 · 0 评论 -
老生常谈,正确使用memset
前段项目中发现一个问题,程序总是在某个dynamic_cast进行动态转换时出异常,查了半天才发现问题原来是出在memset的使用上,虽然问题本身显而易见,但当处于几十万行代码量级中时,就变得不太那么容易定位了。 本文归纳了下使用memset几个需要注意的地方,虽然内容很简单,但也希望对大家有所帮助。 1. memset是以字节为单位,初始化内存块。 当初始化一个字节单位的数组时,可以用mem转载 2017-12-28 12:41:16 · 1041 阅读 · 1 评论 -
结构体struct和typedef后面接指针的含义
在C语言里面,struct是用来定义新的数据类型——结构体,typedef是给数据类型取别名。 据说这两个关键词同时使用有助于减少代码量和增加代码的可读性(不过我认为它当typedef和struct在一起的时候反而降低了代码的可读性),很多时候为了方便,我们常常讲stuct与typedef放在一起用。像这样的代码是比较好理解的,就是取FileInfo为sturct file的别名嘛。typedef转载 2017-12-29 21:04:46 · 5183 阅读 · 9 评论 -
C++程序设计原理与实践之GUI程序实现问题
看到网上有好多人问,C++程序设计原理与实践第二版17章第一个例子如何配置实现的问题,大部分的问题是程序编译链接时出现:无法解析的外部符号 “public: virtual void __thiscall Graph_lib::Shape::move(int,int)”,如此之类。于是,我把这个程序成功配置了一遍,把配置过程与大家分享。首先给出常见错误的结论:不能解析的外部符号链接错误”:问题很可原创 2017-09-13 18:59:14 · 1899 阅读 · 1 评论 -
原码, 反码, 补码 详解
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助!一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号转载 2017-10-26 13:08:42 · 289 阅读 · 0 评论 -
箭头(->)操作符重载
成员访问(->)操作符的重载 (参考了C++primer) 箭头(->)操作符,看起来很像二元操作符,左操作数是类对象,右操作数是类成员,即使如此,箭头操作符的重载函数是没有第二个形参的(第一个是隐含形参this),理解起来有点难度; 函数语句为: a->b;(其中,b可以是函数或者成员;) 步骤1. 如果a是指针,转载 2017-11-02 22:00:31 · 328 阅读 · 0 评论 -
对象的赋值
对象的赋值如果对一个类定义了两个或多个对象,则这些对象之间是可以进行赋值,或者说,一个对象的值可以赋值给另一个同类的对象。这里所指的值是指对象中所有数据的成员的值。对象之间进行赋值是“=”进行的,对象赋值的形式如下: 对象名1=对象名2; #include <iostream>using namespace std;class Box{pub转载 2017-08-17 19:50:46 · 3525 阅读 · 0 评论 -
日期类功能大全
名称:日期类 功能:对按格式如(2000,1,1)的日期,进行合法性判断;闰年判断;判断两个日期是否是同一天;日期的输入输出;判断某个日期是这一年中的第几天;对任一日期增加指定年数、指定月数,并返回对应日期;判断任一日期是星期几 来源:c++程序设计原理与应用9.8,做了一定的内容修改和添加 日期:2017.8.17 Chrono.hnamespace Chrono { enum c原创 2017-08-17 21:16:29 · 339 阅读 · 0 评论 -
c++转换构造函数和类型转换函数
看stl源码时,有一段代码感觉很奇怪iterator begin() { return (link_type)((*node).next); }iterator和link_type是两种不同类型,怎么能这么返回呢?翻了一下以前的笔记,发现是由转换构造函数生成临时对象再return。转换构造函数的作用是将某种类型的数据转换为类的对象,当一个构造函数只有一个参数,而且该参数又不是本类的co转载 2017-08-11 22:34:09 · 358 阅读 · 0 评论 -
C++转换函数
一、conversion function, 转换函数转换函数(conversion function)是一种特殊类型的类成员函数。它定义了一个由用户定义的转换,以便把一个类对象转换成某种其他的类型。 在类的声明中,通过指定关键字operator,并在其后加上转换的目标类型后,我们就可以声明转换函数。1. 特点转换函数采用如下的一般形式: operator type转载 2017-08-11 23:12:07 · 651 阅读 · 0 评论 -
C++11新特性 右值引用
在C++中,左值(lvalue)是可以获取其地址的一个量。由于经常出现在赋值语句的左边,因此称之为左值。例如一个有名称的变量。 例如: int a=10;//a就是一个左值。 传统的C++引用,都是左值引用。例如:int &ra=a;将ra关联到a。这就是左值引用。 C++11,新增了右值引用的概念。用&&代表右值引用。 首先我们来看一下什么叫做右值。可以说所有转载 2017-08-24 11:06:05 · 169 阅读 · 0 评论 -
移动语义
先看个例子:vector<string> v1(1000000);//v1存放着100W个string,假设每个string长度为1000vector<string> v2=copyVector(v1);//使用v1初始化v2构造v2的时候,编译器先利用v1构造生成了一个temp副本,然后将temp复制给一个临时对象,返回给v2,v2利用该临时对象,构造自己。这将导致非常巨大的工作量!做了大量的无原创 2017-08-24 16:11:34 · 278 阅读 · 0 评论 -
C++文件流ios::binary的作用
在创建文件流时,可以显示指定它的打开方式为ios::binary,也就是以二进制方式打开。但是,无论是否指定二进制方式打开文件,读写的最小单位都是字节。那么,它到底起到什么作用呢?以二进制方式打开与普通打开方式的区别是什么?实际上,二者最大的区别在于对换行符的处理方式不同。由于历史原因,Windows操作系统是用两个字符(\r\n)来表示换行符的;而Unix操作系统却是用单个字符(\n)来表示换行符转载 2017-10-10 22:09:04 · 26264 阅读 · 3 评论 -
构造、析构、无参构造、拷贝构造说明
构造函数和析构函数是在类体中说明的两种特殊的成员函数。构造函数的功能是在创建对象时,使用给定的值来将对象初化。析构函数的功能是用来释放一个对象的,在对象删除前,用它来做一些清理工作,它与构造函数的功能正好相反。 构造函数的特点如下: 1、构造函数是成员函数,函数体可写在类体内,也可定在类体外。 2、构造函数是一个特殊的函数,该函数的名字与类名相同,该函数不指定类型说明,它有隐含的返回值原创 2017-11-07 11:15:15 · 328 阅读 · 0 评论 -
细说 new与 malloc 的 10 点区别
地址:http://blog.jobbole.com/102002/转载 2017-09-23 20:22:28 · 128 阅读 · 0 评论