C++语法和使用经验
文章平均质量分 69
RichardYSteven
这个作者很懒,什么都没留下…
展开
-
虚函数
。。。原创 2010-07-16 15:25:00 · 674 阅读 · 0 评论 -
四种cast和typeid的用法
http://www.cplusplus.com/doc/tutorial/typecasting/上面的链接中,讲述了四种cast的用法。其实我还是没懂。dynamic_cast : 只能用于指针和对象的引用,目的是能使cast后的双方完全一直。转载 2010-09-19 16:59:00 · 1090 阅读 · 0 评论 -
总结C++中三种关于”new”的使用方法
http://brightli.wordpress.com/2007/03/29/%E6%80%BB%E7%BB%93c%E4%B8%AD%E4%B8%89%E7%A7%8D%E5%85%B3%E4%BA%8Enew%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/虽然有三种new的用法,但是分为两大类也未尝不可,那么是哪两类呢?其一是new operator,也叫new表达式;其二是operator new,也叫new操作符。这两个英文名称起的也太绝了,很转载 2010-11-29 15:08:00 · 1046 阅读 · 0 评论 -
Overloading new & delete
1. Overloading global new & delete这种方式貌似不太建议使用。不论是built-in type 还是 class,都使用了新的new方法。不论是单个的obj,还是数组,也都用了新的new。如果找不到合适的空间,其实是需要 抛出异常的。 返回值 是个void*在这两个函数内,不能使用cin,cout。 因为cin,cout会调用new,这样会死锁。在new数组时,可以看到分配的空间多于实际空间。这个空间用来指示,有多少obj创建了。#include #include原创 2010-11-30 14:30:00 · 1067 阅读 · 0 评论 -
这是什么高级的c++语法 const char* & NOT char* const &
<br />http://www.moon-soft.com/doc/42185.htm转载 2010-11-02 10:12:00 · 1067 阅读 · 0 评论 -
C++ Reference 引用用法
1. Free Standing Referenceint y;int& r = y; 定义一个引用的时候,必须初始化其值,否则编译器报错。或者 const int& q = 12; 其相应的规则1. A reference must be initialized when it is created. (Pointers can be initialized at any time.)2. Once a reference is initialized to an object,原创 2010-11-01 21:56:00 · 8483 阅读 · 0 评论 -
c++是如何处理 对象 作为返回值 和 输入参数的 -- 拷贝构造
1. 唯一(?)安全的做法是要将返回值存放在一个register中,因为放在stack和全局都不安全。2. 对象所占用的空间是不能保存在一个register中的。所以现在的做法是,在函数参数中传入一个对象的指针,将对象的值存放在这个地方,最后返回的时候返回这个指针。原创 2010-11-02 10:43:00 · 2322 阅读 · 0 评论 -
Pointer to Const & const pointer
<br />这是c++语法中比较绕的一个概念,也是笔试面试中经常会考的知识点。 c++你为什么是c++啊?<br /> <br />下面的内容摘自 Thinking in C++ Chapter 8 Constants<br /> <br />Pointer to const<br /> <br />这有两种定义形式<br />const int* u;<br /> <br />Starting from the identifier, we read “u is a pointer, which poin原创 2010-11-02 14:08:00 · 2195 阅读 · 0 评论 -
C++ constants
const是c++中比较常用的一个修饰符,下面按照const的作用来列出各种用法。1. Value Substitution这个作用就是代替了原来的#define const int a = 9;必须初始化写在头文件internal linkage, 即一般情况下在编译时就替换了,和用define一样,没有分配空间。但对于复杂的结构体,需要分配空间,但仍然是internal linkage, 在link的时候看不到的。2. 你知道这个值是不会变的,把它定义成常量一种是compile time 常量,即上面这原创 2010-11-12 17:47:00 · 1127 阅读 · 0 评论 -
multiple inheritance 的问题 diamond inheritance,及解决办法 virtual inherit
diamond inheritance是多重继承中的一个问题,即两个父类就继承于同一个类。这个问题其实挺诡异的,来看一下这个例子。如果把for循环打开,那么这是一个错误的例子。解释是,因为Multiple继承了两个Base的基类,Base的指针不知道到底要指到哪个。但是可以看到,如果把for循环注释了,仍然可以编译并运行。 好神奇啊。/* * =================================================================================原创 2010-09-17 16:55:00 · 2083 阅读 · 0 评论 -
vtable和vptr
<br />http://www.dreamincode.net/forums/topic/45816-detail-about-how-vptr-and-virtual-table-works/<br /> <br />这是一个相当牛的帖子。<br />1. vptr每个对象都会有一个,而vtable是每个类有一个<br />2. vptr指向了vtable<br />3. 在C++中,如果一个类有虚函数,那么这个对象的memory layout中就有特个vptr,且在最前面<br />4. 一个类中就算原创 2010-09-17 10:23:00 · 5120 阅读 · 1 评论 -
函数重载(overload)、覆盖(override)、隐藏(hide)的区别
函数重载的定义原创 2010-07-16 15:26:00 · 1338 阅读 · 0 评论 -
类的封装,即public, private, protected关键字
三种关键字的使用原创 2010-07-16 15:26:00 · 2852 阅读 · 0 评论 -
friend的定义 和 使用
<br />声明了友元函数或类后,该函数或类就可以访问相应类的private和protected成员了。<br />在下面的例子中,一个是定义了Internet类是Country类的友元类,这样Internet类中的成员函数就可以访问Country类的私有成员了。<br />另一个例子是定义了函数ShowN()是Internet类的友元函数,同理,ShowN()就可以访问Internet的私有成员了。<br /> <br />然后,一个函数可以是多个类的友元。下面例子中的ShowAll()函数,即是Inte原创 2010-07-17 11:30:00 · 1378 阅读 · 0 评论 -
C++拷贝构造函数及重写operator =的区别
先来代码:#include using namespace std;class CA{public: CA(int b) { cout a=b; } CA(const CA& C) // 拷贝构造函数 { cout a=C.a; } CA& operator=(const CA& C)//重写operator= { co原创 2010-07-23 10:26:00 · 5557 阅读 · 0 评论 -
单例模式C++表示
下面是个单例模式的例子。1. 类中有一个static的类指针2. 有一个static的类成员函数,返回该static指针。 static的成员函数只能访问static的成员变量。3. 该static指针的初始化,是单独列出来的,且在进入main函数前执行4. 还有一个奇怪的地方,Singleton的构造函数是private的,为什么可以new Singleton()?#include using namespace std;//Singleton C++class Singleton{p原创 2010-07-23 14:35:00 · 976 阅读 · 0 评论 -
Template Class
#include #include using namespace std;template class String{ C *cont;public: String(); String(const C *src); void output();};template String::String(){ cont = NULL; cout原创 2010-09-06 21:47:00 · 1005 阅读 · 0 评论 -
构造函数不能是虚函数
<br />http://blog.csdn.net/woyaowenzi/archive/2008/04/21/2310710.aspx<br /> <br />最近有人问构造函数能不能是虚函数:<br />当然不能<br />解释一下:<br /> 1,从存储空间角度 <br /> 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎原创 2010-09-16 22:23:00 · 1300 阅读 · 0 评论 -
multiple inheritance 一个简单的例子
multiple inheritance 多重继承,是个很高级的技术。就是一个子类有多个父类。但是这个技术的使用会有些问题:1。 父类中有相同名字的成员函数或者成员数据。下面这个例子说了如何解决这个问题1. 使用命名空间来指明是使用哪个成员/* * ===================================================================================== * * Filename: multi_inherit1.cpp原创 2010-09-17 14:30:00 · 1373 阅读 · 0 评论 -
static 关键字的用法
1.用在函数内,在多次调用间,保持值不变void func() { static int i = 0; cout原创 2010-11-19 14:33:00 · 1278 阅读 · 0 评论