+ -
当前位置:首页 → 问答吧 → 请教一个基本语法问题,不用计算。会基本知识就会

请教一个基本语法问题,不用计算。会基本知识就会

时间:2011-12-27

来源:互联网

C/C++ code
#ifndef WORKERMI_H_
#define WORKERMI_H_
#include <string>
class Worker
{
private:
    std::string fullname;
    long id;
protected:
    virtual void date()const;
    virtual void get();
public:
    Worker():fullname("no name",),id(0L){}
    Worker(const std::string & s, long n):fullname(s), ld(n){}
    virtual Worker~(){} = 0;
    virtual void set() = 0;
    virtual void show() = 0;

};

class Waiter:virtual public Worker
{
private:
    int banache;
protected:
    virtual void date()const;
    virtual void get();
public:
    Waiter():Worker(),banache(0){}
    Waiter(const std::string & s, long n, int i):Worker(s,n),banache(0){}
    Waiter(const Worker & s, int n):Worker(s),banache(n){}
    virtual ~Waiter(){}
    virtual void set()const;
    virtual void show();

};

Worker类是一个纯基类,这条代码:Waiter(const Worker & s, int n):Worker(s),banache(n){}
是不是要用Worker的复制构造函数然后在把临时对象复制给Waiter的基类部分
请问是不是这样的。请详细回答啊

作者: zjxzjx54   发布时间: 2011-12-27

恩,构造子类时要先构造基类部分

作者: yafeng_jiang   发布时间: 2011-12-27

那个是构造函数的初始化列表,用来初始化它的基类成员。构造函数在执行初始化列表的时候进行的是定义(分配内存空间的操作),而进入大括号内之后就完成了定义,再调用构造函数就没用了,只能赋值。

作者: johnpher   发布时间: 2011-12-27

热门下载

更多