
C++
文章平均质量分 78
gogoda
这个作者很懒,什么都没留下…
展开
-
封装和抽象
封装是OO的重要特征,这一点是毫无疑问的,至于算不算的上是OO的三大特征之一(另外两个是继承、多态),目前仍有争论,我也不想在这个问题上作过多的纠缠。 什么是封装呢?封装是一项将低层次的元素组合起来形成新的,高层次实体的技术。被封装的元素隐藏了它们的实现细节。封装是人们对现实世界中解决问题时,为了进行简化问题,对研究的对象所采用的一种方法,一种信息屏蔽技术。例如:打电话的时候,我们只需简单的原创 2009-07-31 09:29:00 · 632 阅读 · 0 评论 -
c++三种编码方式
c++通常使用的是三种编码方式,分别是SBCS(single byte character set),MBCS(multi-byte characterset)和Unicode字符集。SBCS是一个字节一个字符,MBCS是几个字节一个字符,可能是一个,两个,三个不等,但是实际上,绝大多数时候使用两个字节的,所以有时候看到DBCS(double-byte character set)代替MBCS也不转载 2009-06-21 18:11:00 · 2076 阅读 · 0 评论 -
const
1. const常量,如const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应) 2. const 修饰类的数据成员。如: class A { const int size; … } const数据原创 2009-08-25 19:55:00 · 1045 阅读 · 0 评论 -
关于#pragma
多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏可以用下面的方法 #ifdef _X86 #Pragma message(“_X86 macro activated!”) #endif 当我们定义了_X86这个宏以后,应用程序在编译时就会原创 2009-08-25 22:20:00 · 516 阅读 · 0 评论 -
如何在运行时确定对象类型(RTTI)
RTTI 是“Runtime Type Information”的缩写,意思是:运行时类型信息。它提供了运行时确定对象类型的方法。本文将简略介绍 RTTI 的一些背景知识、描述 RTTI 的概念,并通过具体例子和代码介绍什么时候使用以及如何使用 RTTI;本文还将详细描述两个重要的 RTTI 运算符的使用方法,它们是 typeid 和 dynamic_cast。 其实,RTTI 在C++中原创 2009-08-25 22:18:00 · 453 阅读 · 0 评论 -
3D图形数学(8)
当三角形的顶点转换到裁剪空间后,我们对三角形做两个重要测试。注意,这里讨论的顺序并不一定是硬件执行的顺序。 背面剔除第一个测试称作背面剔除,其目的是去除背面摄像机的三角形。在标准三角网格中,我们永远看不到三角形背面,除非进入那些多面体内部。去除这些三角形并非必要,画出它们依然得到正确的图像,因为它们会被前方的三角形盖住。但我们不想浪费时间去绘制任何看不见的物体,所以我们常做背面剔除,特转载 2009-06-21 21:50:00 · 1083 阅读 · 0 评论 -
C语言位运算符的使用
一、按位与运算符&参与运算的两个量按照对应的位进行与运算,且0&0→0, 0&1→0, 1&0→0, 1&1→1利用按位与运算,我们可以方便地实现清零或取一个数的某些位。例如 取出a的低4位,将b的低4位清零。0x0F&a 取出a的低4位0xF0&b 将b的低4位清零这种方法称为“屏蔽方法”,其中0x0F、0xF0称为屏蔽字。二、按位或运算符|参与运算的两个量按照对应位进行或运算,原创 2009-08-25 22:44:00 · 1405 阅读 · 0 评论 -
静态绑定与动态绑定
静态绑定:编译时绑定,通过对象调用动态绑定:运行时绑定,通过地址实现 C++的多态性 静态多态性:函数多态性——函数重载 模板多态性——C++模板(类模板、函数模板) 动态多态性:虚函数(只有用地址才能实现动态多态性)转载 2009-08-02 17:27:00 · 600 阅读 · 0 评论 -
对象数组与构造函数
定义对象数组时,数组中的各个元素需要构造函数来初始化。数组能否定义成功,关键在于每个元素都有合适的构造函数,默认构造函数并不是必须的。 1.动态对象数组,对象所属类型必须有public默认构造函数. 2.静态对象数组(1)没有提供初始化式的元素将调用默认构造函数来初始化 (2)提供初始化式的构造函数将调用相应的构造函数 class Dog{pub原创 2009-08-02 10:42:00 · 2795 阅读 · 0 评论 -
c++静态成员小结
我同学面google,就被问了下面的问题静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量原创 2009-08-02 00:24:00 · 577 阅读 · 0 评论 -
重载操作符和用户定义的转换
操作符重载里有这样一条规则:赋值操作符(=),下标操作符([]),函数调用操作符(()),指针成员访问箭头(->)必须重载为类成员函数。1、操作符重载操作符重载使得程序员能够为类类型的操作数定义预定义的操作符版本,重载的操作符使得类类型对象可以与预定义的操作符一起被使用,使得对于类对象的操纵与内置类型的对象一样直观重载的操作符在类体中被声明,声明方式同普通成员函数一样,只不过它的名原创 2009-08-02 17:10:00 · 1007 阅读 · 0 评论 -
C++ this指针的理解
先要理解class的意思。class应该理解为一种类型,象int,char一样,是用户自定义的类型。(虽然比int char这样build-in类型复杂的多,但首先要理解它们一样是类型)。用这个类型可以来声明一个变量,比如int x, myclass my等等。这样就像变量x具有int类型一样,变量my具有myclass类型。理解了这个,就好解释this了,my里的this 就是指向my的指针。如原创 2009-07-31 20:19:00 · 361 阅读 · 0 评论 -
指针和引用的区别
指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢? 首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你原创 2009-07-31 23:55:00 · 480 阅读 · 0 评论 -
C/C++数组名与指针区别深入探索
引言 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着"数组名就是指针"的误解。 魔幻数组名 请看程序(原创 2009-07-31 23:53:00 · 415 阅读 · 0 评论 -
C++ Primer学习笔记
数据抽象和封装 数据抽象:数据抽象是一种依赖于接口和实现分离的编程和设计技术。类设计者必须关心类是如何实现的,而使用该类的程序员则不必了解这些细节,他们只需要了解类的接口就可以使用该类。 封装:封装是一种将低层次的元素组合起来形成新的、高层次实体的技术。函数是封装的一种形式:函数所执行的细节行为被封装在函数体内。被封装的元素隐藏了它们的实现细节——可以调用一个函数但不能访问它原创 2009-07-31 23:50:00 · 524 阅读 · 0 评论 -
RTTI、虚函数和虚基类的开销分析及使用指导
“在正确的场合使用恰当的特性” 对称职的C++程序员来说是一个基本标准。想要做到这点,首先要了解语言中每个特性的实现方式及其开销。本文主要讨论相对于传统 C 而言,对效率有影响的几个C++新特性。相对于传统的 C 语言,C++ 引入的额外开销体现在以下两个方面:编译时开销模板、类层次结构、强类型检查等新特性,以及大量使用了这些新特性的 STL 标准库都增加了编译器负担。转载 2009-08-27 19:33:00 · 841 阅读 · 0 评论