C++
Downey_W
正在努力的大学生一枚
展开
-
C++虚函数
我们知道,在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是“重复定义”。但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数。例如在例12.1(具体代码请查看:C++多态性的一个典型例子)程序中,在Circle类中定义了 area函数,在Circle类的派生类Cylinder中也定义了一个area函数。这两个函数不仅名字相同,而转载 2015-09-09 10:02:58 · 437 阅读 · 0 评论 -
《C++ Primer Plus》读书笔记
1.sizeof运算符返回类型或数据对象的长度(单位为字节)。注意,如果将sizeof运算符用于数组名,得到的将是整个数组中的字节数。但如果将sizeof用于数组元素,得到的将是元素的长度(单位为字节)。2.字符数组如果以’\0’结尾,则该字符数组为字符串。对于cout输出字符数组,会找到内存一直到’\0’字符之后停止输出。3.初始化字符数组如果没有完全赋值,则之后位置的值默认为0。故如果原创 2015-09-04 08:37:32 · 450 阅读 · 0 评论 -
C++容器
在面向对象程序中,大多引入了容器的概念。那么什么是容器?实质上是一组相同类型对象的集合,但它不仅仅是数组那么简单,它实现了比数组更复杂的数据结构,能够实现更复杂的功能。C++标准模版库里提供了10种通用的容器,它基本可以解决程序中遇到的大部分问题。什么是容器C++中容器的定义如下:数据存储上,有一种对象类型,它可以持有其他对象或指向其他对象的指针,这种对象类型叫容器。通俗的说容器就转载 2015-08-31 10:15:31 · 315 阅读 · 0 评论 -
C/C++ 中的0长数组(柔性数组)
原文链接:http://blog.csdn.net/yby4769250/article/details/7294696在标准C和C++中0长数组如charArray[0]是不允许使用的,因为这从语义逻辑上看,是完全没有意义的。但是,GUN中却允许使用,而且,很多时候,应用在了变长结构体中,如:StructPacket{Int state;转载 2016-03-01 21:05:02 · 344 阅读 · 0 评论 -
malloc/free和new/delete的区别
原文地址:http://blog.csdn.net/chance_wang/article/details/1609081malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自转载 2016-03-01 21:37:26 · 291 阅读 · 0 评论 -
C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
原文链接:http://blog.sciencenet.cn/blog-268057-366795.html内存分配方式内存分配方式有三种:[1] 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量, static 变量。[2] 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执转载 2016-03-05 22:34:45 · 3432 阅读 · 0 评论 -
C++中虚函数工作原理和(虚)继承类的内存占用大小计算
原文链接:http://blog.csdn.net/hackbuteer1/article/details/7883531一、虚函数的工作原理 虚函数的实现要求对象携带额外的信息,这些信息用于在运行时确定该对象应该调用哪一个虚函数。典型情况下,这一信息具有一种被称为 vptr(virtual table pointer,虚函数表指针)的指针的形式。vptr 指向一个被称为转载 2016-03-11 20:59:11 · 424 阅读 · 0 评论 -
内存对齐的规则以及作用
原文地址:http://www.cppblog.com/snailcong/archive/2009/03/16/76705.html首先由一个程序引入话题: 1 //环境:vc6 + windows sp2 2 //程序1 3 #include 4 5 using namespace std; 6 7 struct st1 8 {转载 2016-02-29 21:53:01 · 190 阅读 · 0 评论 -
《Effective C++》读书笔记
1.尽量使用const,enum,inline,替换#define。 #define A 12 记号A并未进入记号表。所以当出错时,错误信息提到的是12而不是A,若A被定义在一个非自己编写的头文件的时候,从而导致对12完全不知道出处,浪费查找时间。#define不仅不能够用来定义class专属常量,也不能提供任何封装性原创 2015-09-10 14:05:38 · 307 阅读 · 0 评论 -
Leetcode: 第四题 Median of Two Sorted Arrays
题目There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).解答求中位数需要根据数组长度是奇数还是偶数分别转载 2015-09-16 21:09:45 · 901 阅读 · 0 评论 -
C++类的私有继承
在声明一个派生类时将基类的继承方式指定为private的,称为私有继承,用私有继承方式建立的派生类称为私有派生类(private derived class ), 其基类称为私有基类(private base class )。私有基类的公用成员和保护成员在派生类中的访问属性相当于派生类中的私有成员,即派生类的成员函数能访问它们,而在派生类外不能访问它们。私有基类的私有成员在派生类中成为转载 2015-09-10 16:05:36 · 524 阅读 · 0 评论 -
C++智能指针
1.三个智能指针模板(auto_ptr,unique_ptr,shared_ptr)都定义了类似指针的对象,可以将new获得的地址赋值给这种对象。当智能指针过期时,其析构函数将使用delete来释放内存。因此,如果将new返回的地址赋值给这些对象,将无需记住稍后释放这些内存,在智能指针过期时,这些内存将自动被释放。2.如果两个常规指针相互赋值,即两个指针指向同一个对象,这是不能接受的,因为程序将试图原创 2015-09-12 10:58:50 · 372 阅读 · 0 评论 -
leetcode 刷起!!!!
今天终于开始刷Leetcode了。 开始用的facebook账号登陆的,提示要发送验证邮箱通过验证之后才能在上面跑代码,坑的是,我点了一下,提示发送成功,一分钟邮箱没有收到邮件,我再点一下,再一下一下......下......,特么的还是没收到,我又申请一个邮箱,再注册一个账号,然后还是一下.....一下....下....还是不行。然后换了个网络同样不行。。于是各种原创 2015-09-15 20:25:50 · 1876 阅读 · 0 评论 -
开发PLO编译器过程的一些体会
学了c++有一段时间了,一直没有适合的项目练手,刚好最近编译原理课程设计要求做一个pl0编译器,于是决定选择c++来编写。一路上可叫一个坎坷啊,要么是逻辑错误,要么是语言特性方面不熟悉而导致编译不通过,或者程序出错。可以说,三分之一的开发时间都在测试c++的用法= = 。不过还好坚持下来也做完了,其中各种数据结构,各种用,如堆栈,list,map,二维数组,vector等,让我熟悉了一下这些常原创 2015-12-15 12:40:08 · 868 阅读 · 0 评论 -
【C++11】新特性——引入nullprt
原文链接 : http://blog.csdn.net/huang_xw/article/details/87643461. 引入nullptr的原因引入nullptr的原因,这个要从NULL说起。对于C和C++程序员来说,一定不会对NULL感到陌生。但是C和C++中的NULL却不等价。NULL表示指针不指向任何对象,但是问题在于,NULL不是关键字,而只是一个宏定义(ma转载 2015-11-23 15:53:46 · 449 阅读 · 0 评论 -
[C/C++]函数参数的入栈顺序与可变参数的实现
#includevoid foo(int x, int y, int z){ printf("x = %d at [%X]\n", x, &x); printf("y = %d at [%X]\n", y, &y); printf("z = %d at [%X]\n", z, &z);}int main(int argc, ch转载 2015-10-11 13:55:39 · 563 阅读 · 0 评论 -
C++ STL 常用容器 学习笔记
一、vector 1. vector相当于一个动态数组,支持随机存取。 2. 如果在vector前端或者中部安插或删除元素,性能比较差,因为操作点之后的每一个元素都必须移动位置。 3. 函数 capacity() ,它返回实际能够容纳的元素数量,如果超过这个数量,vector 有必要重新分配内存(一倍),然后将元素重新复制到vector里。原创 2015-09-24 13:46:20 · 352 阅读 · 0 评论 -
Leetcode:Longest Palindromic Substring
没弄过ACM的人表示刷leetcode还是有压力的!!!!看着别人的神思路,和对题目的分析还有入手点,让我真后悔大一没去搞搞ACM锻炼锻炼思维啊= = 目前比较遗憾的两件事就是大一没参加到学生会,和没有刷ACM题。 就好比这题,求最长回文子串 Given a string S, find the longest palindromic substr原创 2015-09-17 22:00:10 · 286 阅读 · 0 评论 -
关于数组和指针的一些理解
int a = 3;int * b = &a;cout<<"b = "<<b<<endl;coutb 是指向int类型a的一个指针。第一行输出打印出b指向数据的地址。第二行输出打印第一行输出的地址再加上4个字节。原因是:指针的加减操作,例如加一,则会在原来指向的数据地址基础上,加上所指数据所占的字节数,在例子中,所指的数据指的是int 类型,占4个字节,所以在原基础上增加4个字节。原创 2016-08-13 16:43:58 · 504 阅读 · 2 评论