首页 新闻 会员 周边

primer中一个例题

0
悬赏园豆:30 [已解决问题] 解决于 2014-05-08 06:38

class Item_base{

    public:
        Item_base(const string &book = "", int p = 0):price(p), isbn(book){}
        virtual ~Item_base(){}

        virtual    int net_price(int n) const{
            return n * price;
        }

        string book() const { return isbn; }
    protected:
        int price;
    private:
        string isbn;
};
类中的构造函数为什么要用book来做参数及其原理?

wtu_sos的主页 wtu_sos | 初学一级 | 园豆:181
提问于:2014-05-05 23:28
< >
分享
最佳答案
0

  主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。

  任何时候,只要创建类或结构,就会调用它的构造函数。类或结构可能有多个接受不同参数的构造函数。构造函数使得程序员可设置默认值、限制实例化以及编写灵活且便于阅读的代码。

  你这带参构造函数就可以做到初始化成员变量。

收获园豆:30
wongdavid | 菜鸟二级 |园豆:394 | 2014-05-07 16:50

呃,代码中,book是一个函数,我想了解的是为什么要用函数的引用来初始化,而且这样的用法有什么有含义跟好处?

wtu_sos | 园豆:181 (初学一级) | 2014-05-07 21:18

@wtu_sos: 

Item_base(const string &book = "", int p = 0):price(p), isbn(book){}这语句的book是函数?

这里的book被初始化为一个空的字符串哟。

wongdavid | 园豆:394 (菜鸟二级) | 2014-05-08 02:13

@wongdavid:  string book() const { return isbn; }

wtu_sos | 园豆:181 (初学一级) | 2014-05-08 06:34

@wongdavid: 谢谢,是我理解错了。你是对的

wtu_sos | 园豆:181 (初学一级) | 2014-05-08 06:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册