C++
文章平均质量分 59
Mr-LiangYizhao
这个作者很懒,什么都没留下…
展开
-
C++派生类与基类的转换规则
只有公用派生类才是基类真正的子类型,它完整地继承了基类的功能。基类与派生类对象之间有赋值兼容关系,由于派生类中包含从基类继承的成员,因此可以将派生类的值赋给基类对象,在用到基类对象的时候可以用其子类对象代替。 具体表现在以下几个方面: 派生类对象可以向基类对象赋值。 可以用子类(即公用派生类)对象对其基类对象赋值。如 A a1; //定义基类A对象a1 B b1; //定义类A转载 2014-03-12 17:11:19 · 703 阅读 · 0 评论 -
C++静态成员函数总结
类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时转载 2014-03-23 21:03:12 · 576 阅读 · 0 评论 -
C++ 类访问控制public/private/protected探讨
C++ 类访问控制public/private/protected探讨原帖如下 1 #include 2 using namespace std; 3 4 class A{ 5 public: 6 A(int i_,int j_) 7 { 8 i=i_; 9 j=j_;10 }11转载 2014-03-21 12:21:10 · 765 阅读 · 0 评论 -
C++typedef的用法
代码简化, 促进跨平台开发的目的. typedef 行为有点像 #define 宏,用其实际类型替代同义字。 不同点:typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换。用法一:typedef int (*MYFUN)(int, int);这种用法一般用在给函数定义别名的时候上面的例子定义MYFUN 是一个函数指针, 函数类转载 2014-03-19 18:18:15 · 632 阅读 · 0 评论 -
多态基类的析构函数必须加上virtual
《Effective C++》说: 因为C++明确指出,当derived class对象经由一个base class指针被删除,而base class带着一个non-virtual析构函数,其结果未有定义---实际执行时通常发生的是对象的derived成分没被销毁。如:baseclass *ptb = derivedclassFuc() //子类的一个函数; 其中basecl转载 2014-03-19 17:13:15 · 831 阅读 · 0 评论 -
C++delete和delete[]区别
我们通常从教科书上看到这样的说明:delete 释放new分配的单个对象指针指向的内存delete[] 释放new分配的对象数组指针指向的内存那么,按照教科书的理解,我们看下下面的代码:int *a = new int[10];delete a; //方式1delete [] a; //方式2肯定会有很多人说方式1肯定存在内存泄漏,是这样吗?转载 2014-03-19 16:44:27 · 930 阅读 · 0 评论 -
free/delete与野指针
一、free与delete把指针怎么了? 用free或delete 作用于指向堆内存的指针上,发生了什么? 它们只是把指针指向的内存释放掉,而并没有把指针本身释放掉,甚至连指针的值都没有改变。即,它们作用于指针,并没有改变指针指向的地址,而只是把该地址处的内存释放掉了,或者说该地址对应的内存是垃圾。 如: char转载 2014-03-19 09:40:33 · 1125 阅读 · 0 评论 -
数组与指针
数组与指针是内存管理的关键,也是C/C++中较难掌握的的地方。现在对其进行一些分析与总结。 一。内存分配方式有四种: 1.从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的 整个运行期间都存在。例如全局变量,static 变量,即使是局部static变量(即函数内部定义的static变量)。转载 2014-03-19 10:26:17 · 709 阅读 · 0 评论 -
C++强制类型转换--dynamic_cast操作符
dynamic_cast:形式dynamic_cast ( expression ),将expression转换为type类型。用于:继承关系中的基类和派生类之间的指针或引用的变换,特别是能用dynamic_cast把指向基类的指针或引用转换成指向其派生类或其兄弟类的指针或引用;没有继承关系,指针和引用也可以被转换,只要指针或引用指向或引用的对象具有至少一个虚函数,如:可原创 2014-03-19 11:37:40 · 835 阅读 · 0 评论 -
main 函数执行前、后执行的代码
main结束 不代表整个进程结束(1)全局对象的构造函数会在main 函数之前执行, 全局对象的析构函数会在main函数之后执行; 用atexit注册的函数也会在main之后执行.(2)一些全局变量、对象和静态变量、对象的空间分配和赋初值就是在执行main函数之前,而main函数执行完后,还要去执行一些诸如释放空间、释放资源使用权等操作 (3)进程启转载 2014-03-19 17:29:41 · 667 阅读 · 0 评论 -
数组中a和&a的区别
#includeint main(void){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); //&a代表整个数组的地址,+1应该加上sizeof(a)的长度,所以ptr指向a[5]位置处。 printf("%d %d\n",*(a+1),*(ptr-1));//a代表数组首元素的地址,+1应该加上siz原创 2014-03-09 15:20:48 · 917 阅读 · 0 评论 -
用C++设计一个不能被继承的类
分析:这是Adobe 公司 2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。 在Java 中定义了关键字 final ,被 final 修饰的类不能被继承。但在 C++ 中没有final 这个关键字,要实现这个要求还是需要花费一些精力。 首先想到的是在 C++ 中,子类的构造函数会自动调转载 2014-03-09 16:38:46 · 671 阅读 · 0 评论 -
const与指针
声明指针时,可以在类型前或后使用关键字const,也可在两个位置都使用。例如,下面都是合法的声明,但是含义大不同:const int * pOne; //指向整形常量 的指针,它指向的值不能修改int * const pTwo; //指向整形的常量指针 ,它不能在指向别的变量,但指向(变量)的值可以修改。 const int *const pThree;转载 2014-03-26 19:48:08 · 584 阅读 · 0 评论