随笔分类 -  C++

摘要:在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进 制形式输出一个 整数,对输出的小数只保留两位小数等。有两种方法可以达到此目的。一种是使用控制符的方法;第2种是使用流对象的有关成员函数。分别叙述如下。 使用控制 阅读全文
posted @ 2016-09-09 15:01 料峭 阅读(229) 评论(0) 推荐(0)
摘要:有时候经常听到一些不明觉厉的词语,什么编译啊链接啊语义分析啊的,就找书来看看,把笔记画成了图: 编译器干了些啥呢,如下图: 参考书:《程序员的自我修养——链接、装载与库》,《深入理解计算机系统》 阅读全文
posted @ 2016-08-05 10:20 料峭 阅读(292) 评论(0) 推荐(0)
摘要:牛客网上的题: 这个题中,A的大小为4,B的大小为8,seta1的形参是A类型指针,seta2的形参是B类型指针 所以seta1内部的步长增长是4,seta2内部的步长增长是8,当seta1和seta2的实参是B类型时在赋值时发生: 所以: seta1的输出是22221111 seta2的输出是21 阅读全文
posted @ 2016-08-04 11:21 料峭 阅读(352) 评论(0) 推荐(0)
摘要:构造函数不可以是虚函数的,这个很显然,毕竟虚函数都对应一个虚函数表,虚函数表是存在对象内存空间的,如果构造函数是虚的,就需要一个虚函数表来调用,但是类还没实例化没有内存空间就没有虚函数表,这根本就是个死循环。 可是析构函数却要定义成虚函数,这是为什么呢,写一个非常简单的例子来理解一下: 输出结果: 阅读全文
posted @ 2016-08-03 17:06 料峭 阅读(6230) 评论(0) 推荐(0)
摘要:因为对内存管理部分一直没有很清楚的思路,所以一直在找资料想系统看一下这部分的内容。在C primer plus里看到了这一章,虽然大多都是心知肚明的东西,但是还是很多概念性系统性的东西让我眼前一亮,把笔记整理到这里来,用于自己回顾。 作用域: l 代码块作用域:在代码块中(花括号包含)定义的变量,函 阅读全文
posted @ 2016-07-28 23:15 料峭 阅读(270) 评论(0) 推荐(0)
摘要:1、 隐式类型转换,相关联的类型(e.g.int vs double)之间可以发生隐式类型转换。 比如,在条件中,非布尔类型转为布尔类型; 初始化时,初始值变为变量类型; 赋值时,右值变成左侧的类型; 运算过程中的类型统一; 数组被转换成指向首元素的指针; 2、 显式类型转换 Cast-name<t 阅读全文
posted @ 2016-07-21 14:35 料峭 阅读(158) 评论(0) 推荐(0)
摘要:1、 默认状态下,const对象仅在文件内有效,即在不同文件中出现同名const变量的时候,其实相当于这些同名const是不同的东西。 如果想要在文件中共享const变量,可以在const变量不管是声明还是定义都添加extern关键词,这样就只需要定义一次。 2、 const的引用,不能通过引用改变 阅读全文
posted @ 2016-07-14 15:37 料峭 阅读(198) 评论(0) 推荐(0)
摘要:main函数中被注释掉的部分,ss结果为constchar*类型,但是传参给Cchar2int就变成垃圾内容,cout结果为0 why? 状似与str2Cchar中直接c_str一样的错误 猜测与变量的生存周期、内存管理相关 待解答 阅读全文
posted @ 2016-07-05 22:44 料峭 阅读(259) 评论(0) 推荐(0)
摘要:C++常见的内存分配方式有三种: 从静态存储区分配,这里主要是存储局部static对象,类的static成员以及定义在函数之外的变量; 从栈内存分配,这里主要是存储函数内的非static对象; 从堆内存动态分配 其中,静态存储区以及栈内存中的对象,都是由编译器自动创建和销毁,而堆内存中的对象都是由程 阅读全文
posted @ 2016-04-28 22:06 料峭 阅读(728) 评论(0) 推荐(0)
摘要:I 动态绑定、多态、虚函数、对象的静态类型与动态类型 1、基类中有两种函数: 派生类直接继承不做改变 派生类重新定义成适合自身的版本覆盖掉基类的函数 派生类直接继承不做改变 派生类重新定义成适合自身的版本覆盖掉基类的函数 对于第一种就是普通的基类成员函数,第二种通常通过将该函数定义为虚函数来实现。 阅读全文
posted @ 2016-04-26 22:08 料峭 阅读(234) 评论(0) 推荐(0)
摘要:刷leetcode 263.uglynumber时,代码如下: 测试用例里用到的数据是-2147483648,然后报错error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型 这是因为int的最小值是-2147483648,最大值是2147483647,但是我们不能用int n = 阅读全文
posted @ 2016-04-26 13:18 料峭 阅读(6092) 评论(0) 推荐(0)
摘要:看耗子叔文章学习虚函数表(http://blog.csdn.net/haoel/article/details/1948051)的时候被例子的第一句惊到了 多亏RR相助,弄懂了。 这行代码宏定义了一个函数指针类型Fun,函数指针,指的是指向函数的指针 第一个void指的是函数返回值类型,第二个voi 阅读全文
posted @ 2016-04-25 22:06 料峭 阅读(1836) 评论(0) 推荐(0)
摘要:运算符重载,主要是简化类类型运算,能够让我们对类对象直接用运算符进行运算。基本语法: 简单地说,就是给类对象定义自己的加减乘除等等操作符。同时,作为为了类对象的操作而重载的运算符,它是类的成员函数,或者含有至少一个类类型参数,例如: (VS2013) 另外,重载运算符分两种①重载运算符是类的成员函数 阅读全文
posted @ 2016-04-24 15:36 料峭 阅读(284) 评论(0) 推荐(0)
摘要:写惯了python,对于C++的语法越来越生疏,不同于python中函数可以return多个变量,C++的函数要想返回多个参数可以利用指针实现。 因为在函数内部的变量都是局部变量,所以当参数传入函数中,不return不会改变函数之外的全局变量的值。但是如果传入指针参数或者地址参数,则可以实现对外部变 阅读全文
posted @ 2015-12-29 12:01 料峭 阅读(733) 评论(0) 推荐(0)