白杨 http://baiy.cn “在正确的场合使用恰当的特性” 对称职的C++程序员来说是一个基本标准.想要做到这点,首先要了解语言中每个特性的实现方式及其开销.本文主要讨论相对于传统 C 而言,对效率有影响的几个C++新特性: 编译时开销 运行时开销 相关文档: C++编码规范与指导 C++异常机制的实现方式和开销分析 多处理器环境和线程同步的高级话题 C++0x(C++11)新特性点评 相对于传统的 C 语言,C++ 引入的额外开销体现在以下两个方面: 编译时开销 模板.类层次结构.强类…
一.基类     从一个类派生出另一个类时,原始类称为基类,继承类称为派生类. 派生类对自身基类的private成员没有访问权限,对基类对象的protected成员没有访问权限,对派生类对象的(基类之外)的private和protected成员具有访问权限. 由于C++基础不好,平时也不用它,导致今天才纠正一个非常关键的错误,类的访问权限,是对类而言的,而不是对类的对象而言的.一直都理解错了.这句话都没脸写出来,还是写下来了. 下面是一段简答的测试代码.对于调用成员函数的对象test,基类形参,…
在重载CDialog的OnInitDialog()函数的时候,在首行会添加一句:CDialongEx::OnInitDialog();语句,这是为什么呢?什么时候添加,什么时候不添加? 实际上,我们在继承过程中,虚函数(有virtual关键字修饰的函数)是专门用来让子类重载的,当子类重载了这些函数后,就会完全覆盖父类的同名同参数函数. 但是往往有时候父类的同名函数却是起到了关键的作用(如本例中的OnInitDialog()函数就是初始化对话框本身的作用),我们并不想完全覆盖父类的该同名函数, 而…
为了访问公有派生类的特定成员,可以通过讲基类指针显示转换为派生类指针. 也可以将基类的非静态成员函数定义为虚函数(在函数前加上virtual) #include<iostream> using namespace std; class base{ public: /*virtual*/ void who(){ //define this function to virtual will be normal cout << "this is the class of bas…
示例: #include<iostream> using namespace std; class A { public: int a; int b; A(int aa=1, int bb=2):a(aa),b(bb) {} }; class B :public A { public: B(int a=3,int b=4,int c=5,int d=6):A(a,b),d(c),g(d) {} int d; int g; }; void f(A* p,int n) { for (int i =…
虚基类       在说明其作用前先看一段代码 class A{public:    int iValue;}; class B:public A{public:    void bPrintf(){cout<<"This is class B"<<endl;};}; class C:public A{public:    void cPrintf(){cout<<"This is class C"<<endl;};}…
基类和派生类的定义以及虚函数 基类Quote的定义: classs Quote { public: Quote() = default; Quote(cosnt std::string& book, double sales_price) : bookNo(book), price(sales_price) {} std::string isbn() const { return bookNo; } virtual double net_price(size_t n) const { retur…
转载地址:http://blog.csdn.net/acs713/article/details/7352440 抽象类是一种特殊的类,它是为了抽象和设计的目的为建立的,它处于继承层次结构的较上层. ⑴抽象类的定义: 称带有纯虚函数的类为抽象类. ⑵抽象类的作用: 抽象类的主要作用是将有关的操作作为结果接口组织在一个继承层次结构中,由它来为派生类提供一个公共的根,派生类将具体实现在其基类中作为接口的操作.所以派生类实际上刻画了一组子类的操作接口的通用语义,这些语义也传给子类,子类可以具体实现这些…
一.C++多态 C++的多态包括静态多态和动态多态.静态多态包括函数重载和泛型编程,动态多态包括虚函数.静态多态是指在编译期间就可以确定,动态多态是指在程序运行时才能确定. 二.虚函数 1.虚函数为类的非静态成员函数,访问权限一般为public.函数声明时,在返回值前加virtual关键字,函数定义时不需要加virtual.父类定义的虚函数,子类在继承时,可以对虚函数重新定义,当然子类的函数应该与父类虚函数一样,只是函数实现不一样.我们用父类的指针指向子类的实例,然后通过父类的指针可以调用实际子…
参考:http://www.weixueyuan.net/view/6376.html 总结: 在C++中,可以通过抽象基类来实现公共接口 纯虚成员函数没有函数体,只有函数声明,在纯虚函数声明结尾加上“=0”表明此函数为纯虚成员函数. 包含纯虚成员函数的类即为抽象基类,之所以说它抽象,那是因为它无法实例化,也即无法用于创建对象. 纯虚成员函数可以被派生类继承,如果派生类不重新定义抽象基类中的所有(有多个则要重新定义多个)纯虚成员函数,则派生类同样会成为抽象基类,因而也不能用于创建对象. 一个纯虚…