
C++
文章平均质量分 80
cenjoy
这个作者很懒,什么都没留下…
展开
-
探讨C++中对象的“浅拷贝”与“深拷贝”
C++中对象的复制就如同“克隆”,用一个已有的对象快速地复制出多个完全相同的对象。一般而言,以下三种情况都会使用到对象的复制:(1)建立一个新对象,并用另一个同类的已有对象对新对象进行初始化,例如:class Rect{private:int width;int height;};Rect rect1;Rect rect2(rect1); // 使用rect1初始化rec转载 2012-02-05 20:20:18 · 7431 阅读 · 0 评论 -
用C++设计一个不能被继承的类
点击打开链接 题目:用C++ 设计一个不能被继承的类。分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。在Java 中定义了关键字final ,被final 修饰的类不能被继承。但在C++ 中没有final 这个关键字,要实现这个要求还是需要花费一些精力。首先想到的是在C++ 中,子类的构造函数转载 2012-02-20 20:48:23 · 1371 阅读 · 0 评论 -
堆和栈的区别
非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,转载 2012-03-16 09:38:18 · 480 阅读 · 0 评论 -
常量字符串为什么位于静态存储区?
char *c="chenxi";书上说: "chenxi"这个字符串被当作常量而且被放置在此程序的内存静态区。那一般的int i=1;1也是常量,为什么1就不被放置在此程序的内存静态区了呢?请高手指点!所有的字符窜常量都被放在静态内存区因为字符串常量很少需要修改,放在静态内存区会提高效率例:char str1[] = "abc";char str2转载 2012-03-07 15:35:30 · 453 阅读 · 0 评论 -
在C中引用C++语言中的函数和变量
引用C++语言的头文件需添加extern "C",但是在C语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"函数声明为extern类型,希望本文能教会你更多东西。实际上,在连接阶段,连接器会从模块A生成的目标文件moduleA.obj中寻找_foo_int_int这样的符号!加extern "C"声明后的编译和连接方式加extern转载 2012-02-09 11:28:23 · 1234 阅读 · 0 评论 -
C++中继承的内存分布
class Base { public: int m_base; }; class DerivedA: public Base { public: int m_derivedA; }; class DerivedB: public Base { public: int m_derivedB; }; class Deriv转载 2012-02-08 21:10:35 · 2445 阅读 · 0 评论 -
多重继承及虚继承中对象内存的分布
多重继承及虚继承中对象内存的分布篇文章主要讲解G++编译器中虚继承的对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。问题拿捏得十分到位,下面是我对原文的翻译,原文见这里(By Edsko de Vries, January 2006)。本文是介绍C++的技术文章,假定读者对于C+转载 2012-02-08 21:14:43 · 878 阅读 · 0 评论 -
C++不定参数的应用
不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技术并没有应用很多。除了格式化输出之外,我实在没看到多少应用。主要原因是这种技术比较麻烦,副作用也比较多,而一般情况下重载函数也足以替换它。尽管如此,既然大家对它比较感兴趣,我就简单总结一下它的使用和需要注意的常见问题。原理刚学C语言的时候,一般人都会首先接触printf函数。通过这个函数,你可以打印不定个数的变量到屏幕转载 2012-02-06 23:07:25 · 9128 阅读 · 0 评论 -
C++不定参数综合实例
#include #include #include using namespace std;/************************************************************************//* type va_arg(va_list argptr, type); void va_end(va_list argptr)原创 2012-02-06 23:17:46 · 2949 阅读 · 0 评论 -
C++标准转换运算符dynamic_cast
dynamic_cast (expression)dynamic_cast运算符,应该算是四个里面最特殊的一个,因为它涉及到编译器的属性设置,而且牵扯到的面向对象的多态性跟程序运行时的状态也有关系,所以不能完全的使用传统的转换方式来替代。但是也因此它是最常用,最不可缺少的一个运算符。与static_cast一样,dynamic_cast的转换也需要目标类型和源对象有一定的关系:继承关系。转载 2012-03-22 21:51:59 · 566 阅读 · 0 评论