摘要:之前写拷贝构造函数的时候,以为参数为引用,不为值传递,仅仅是为了减少一次内存拷贝。然而今天看到一篇文章发现自己对拷贝构造的参数理解有误。 参数为引用,不为值传递是为了防止拷贝构造函数的无限递归,最终导致栈溢出。 下面来看一个例子: class test { public: test() { cout
阅读全文
摘要:const 放在函数后表示这个函数是常成员函数, 常成员函数是不能改变成员变量值的函数。const 限定符,它把一个对象转换成一个常量。举例:为了使成员函数的意义更加清楚,我们可在不改变对象的成员函数的函数原型中加上const说明:class Point{public:int GetX() cons
阅读全文
摘要:String类是应用框架中不可或缺的类 重载运算符实现字符串的操作 #idndef IOTECK_STRING_H_#define IOTECK_STRING_H_namespace iotek{ class String { public: String(const char*=NULL); ~S
阅读全文
摘要:运算符重载 提高程序的可读性 如果一个类没有提供赋值运算符,则默认提供一个 (浅拷贝) 如果一个类提供了拷贝构造函数,那么也要提供一个重载的赋值运算函数 Person& Person::operator=(const Person &other){ if(this==&other) return *
阅读全文
摘要:1. 什么是多态 多态是C++中的一个重要的基础,可以这样说,不掌握多态就是C++的门外汉。然而长期以来,C++社群对于多态的内涵和外延一直争论不休。大有只见树木不见森林之势。多态到底是怎么回事呢?说实在的,我觉的多态这个名字起的不怎么好(或是译的不怎么好)。要是我给起名的话,我就给它定一个这样的名
阅读全文
摘要:一、什么叫inline函数? inline(小心,不是online),翻译成“内联”或“内嵌”。意指:当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置。这样做的好处是省去了调用的过程,加快程序运行速度。(函数的调用过程,由于有前面所说的参数入栈等操
阅读全文
摘要:构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。 构造函数不能声明为虚函数的原因是:1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知
阅读全文
摘要:一、初步了解——指针与取地址 先看程序: 上面int *p定义了一个指向int类型指针p(我们使用*符号把p声明为指针),并初始化p使其指向int类型的变量num,这里&num中的&是取地址操作符,当&作用于一个对象上时,它返回了该对象的地址。 所以这里指针p指向了num所对应的地址。(我测试时输出
阅读全文
摘要:转自 http://blog.chinaunix.net/uid-7396260-id-2056691.html 一、#include “filename.h”和#i nclude <filename.h>的区别 #include “filename.h”是指编译器将从当前工作目录上开始查找此文件
阅读全文
摘要:C++封装继承多态总结 面向对象的三个基本特征 面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用! 封装 什么是封装? 继承 什么是继承? 继承是指这样
阅读全文
摘要:1、构造函数和析构函数不能被继承。构造函数和析构函数是用来处理对象的创建和析构的,它们只知道对在它们的特殊层次的对象做什么。所以,在整个层次中的所有的构造函数和析构函数都必须被调用而不能被继承。2、子类的构造函数会显示的调用父类的构造函数或隐式的调用父类的默认的构造函数进行父类部分的初始化。3、析构
阅读全文
摘要:一、虚函数 多态性(polymorphism)是面向对象程序设计的基石之一,而虚函数(virtual function)则是多态性的必要成分。 相同的函数调用可以执行完全不同的函数,这种能力被称为多态性。要实现多态性必须具备几个条件: 首先,所有的不同的模型类必须是从同一个基类派生出来的; 其次,基
阅读全文
摘要:一、内存管理:new和delete 1、new操作符:从操作系统获得内存块,并返回该内存块的首地址。 delete操作符:将new申请的内存返还给操作系统。 开始一个简单的例子: #include <iostream> #include<cstring> using namespace std; i
阅读全文
摘要:关键词:构造函数,浅拷贝,深拷贝,堆栈(stack),堆heap,赋值运算符摘要: 在面向对象程序设计中,对象间的相互拷贝和赋值是经常进行的操作。 如果对象在申明的同时马上进行的初始化操作,则称之为拷贝运算。例如: class1 A("af"); class1 B=A; 此时其实际调用的是B(A)这
阅读全文