虚函数和建构函数

作者在 2010-06-16 19:41:36 发布以下内容
《C++语言的设计和演化》219页。虚函数和建构函数。
基本的设计要点:直到对一个对象的建构函数的运行结束之前,这个对象就一直像一个正在建造之中的建筑物:你必须忍受结构没有完工所带来的各种不便,常常需要依靠临时性的脚手架,必须时时当心在与危险环境相处时的各种问题。一旦建构函数返回,编译程序和用户就都可以假定构造完成的对象能够使用了。
/*
建构函数是建立起一个环境,使其他成员函数在其中操作。D&E p219
*/
#include<iostream.h>
class B
{
public:
    int b;
    virtual void f();//1. void f(); 2. virtual void f();
    void g();
    B();
};
void B::f()
{
    cout << "B::f()" << '\n';
}
void B::g()
{
    cout << "B::g()" << '\n';
    b++;
    f();//1. f(); 2. B::f();
}
B::B():b(0)
{
    b++;
    f();
}
class D : public B
{
public:
    int x;
    void f();
    D();
};
D::D()
{
    cout << "D::D()" << '\n';
    f();
}
void D::f()
{
    cout << "D::f()" << '\n';
}
int main()
{
    D a;
    a.f();
    a.g();//观察调用的是B::f();or,D::f();
    cout << endl;
    B b;
    b.f();
    b.g();
    return 0;
}
D&amp;E学习笔记 | 阅读 1654 次
文章评论,共3条
源本英明C
2010-06-21 13:09
1
haha
hmsabc
2010-08-14 07:55
2
建议写点注释,不然的话,我看起来感觉很费力。
lintaoyn(作者)
2010-09-09 16:38
3
<div class="quote"><span class="q"><b>hmsabc</b>: 建议写点注释,不然的话,我看起来感觉很费力。</span></div>一个对象在其构造和析构的时候是没有多态性的,所有的虚函数都相当于普通的函数
游客请输入验证码
浏览31012次