computer 版 (精华区)

发信人: remember (明天会更好), 信区: program
标  题: C++自测题(2)
发信站: 听涛站 (2001年09月29日17:41:10 星期六), 站内信件

(2)About Declaration and Definition

已知Stack类的定义(参见自测题1)
众所周知,Stack类的构造函数被重载,支持两种形式的构造函数:
无参数和带一个int类型的参数;
ok,我们来看看以下哪些变量声明的写法是正确的:
a. Stack stack_a;
b. Stack stack_b();
c. Stack stack_c(1024);

好,接下来我们来看另一个关于函数的声明和定义(或叫实现)方面的问题。
在MyStack类中(参见自测题1),我们有这么一行程序:
MyStack(int maxsize=1024) {...}
通过自测题1,相信大家都知道这行的含义,现在具体的构造函数的定义是
在类体内以inline的形式写的,要是我们希望在类体外部写其具体定义呢?
修改后是否改如下呢?
class MyStack : public Stack{
public:
    MyStack(int maxsize=1024);
    ...
};

MyStack::MyStack(int maxsize=1024)
{
    cout << "MyStack::MyStack(int)\n";
}

好,接下来我们希望给MyStack增加一个初始化参数,例如是默认栈底元素,
就int defaultnum吧,ok,下面的写法是否可以通过编译器呢?
class MyStack : public Stack{
public:
    MyStack(int maxsize=1024, int defaultnum);
    ...
};

嗯,我们都知道通常的做法是类体声明放在.h头文件,具体函数定义放在.cpp
文件,但有一种函数例外,请指出:
a. virtual
b. inline
c. Constructors and Destructors
并解释一下为什么这种函数通常应该放在.h头文件中(当然,不是绝对的)。
ok,已经写了不少问题了,大家想想吧~~~

--
    洛阳亲友如相问  一片冰心在玉壶
※ 来源:·听涛站 tingtao.dhs.org·[FROM: 匿名天使的家] 
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:1.075毫秒