| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 888 人关注过本帖
标题:计算类对象被创建,复制,赋值或者删除的次数问题
只看楼主 加入收藏
jxlcs
Rank: 1
等 级:新手上路
帖 子:30
专家分:1
注 册:2008-7-27
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:6 
计算类对象被创建,复制,赋值或者删除的次数问题
此为accelerated c++ 这本书上的习题11-5. 完全不懂,书中没提到过默认构造函数的计数方法,想不出来.求助

题目:在Student_info 类中加入计数代码,计算一下对象被创建,复制,赋值或者删除的次数.用这个可计数的类运行第六章的学生成绩程序.使用这个其有计数功能的Student_info类可以算出在库中的算法进行了多少次复制操作.对比库中不同的类测到的复制次数,可以估计出这些不同的类对资源的消耗量.试一试进行计数并对结果进行分析.

Student_info类:
程序代码:
class Student_info
{
    public:
        Student_info();        //构造一个空的 Student_info 对象
        Student_info(std::istream&);        //读一个流从而构造一个对象
        std::string name() const { return n; }
        bool valid() const { return !homework.empty(); }
        std::istream& read(std::istream&);
        double grade() const;
    private:
        std::string n;
        double midterm, final;
        std::vector<double> homework;
};

bool compare(const Student_info&, const Student_info&);


我只想到了在每次调用创建,复制,赋值等操作的时候手动调用一次计数函数.
怎样自动判断调用了复制构造函数,自动计数呢?

[ 本帖最后由 jxlcs 于 2013-4-18 21:48 编辑 ]
搜索更多相关主题的帖子: public 消耗量 资源 
2013-04-18 21:03
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
静态变量,谢谢

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-18 21:05
jxlcs
Rank: 1
等 级:新手上路
帖 子:30
专家分:1
注 册:2008-7-27
收藏
得分:0 
回复 2楼 peach5460
问题是怎样判断是否调用了库中的复制构造函数呢
总不该是我每次进行复制操作的时候就自己手动调用一次计数函数吧, 这也太傻瓜了吧.

[ 本帖最后由 jxlcs 于 2013-4-18 21:12 编辑 ]
2013-04-18 21:08
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
定义个静态变量就可以进行统计功能,静态局部变量在函数调用结束后不消失而保留原值,及占用的内存空间不释放

Maybe
2013-04-18 22:54
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:5 
以下是引用jxlcs在2013-4-18 21:08:57的发言:

问题是怎样判断是否调用了库中的复制构造函数呢
总不该是我每次进行复制操作的时候就自己手动调用一次计数函数吧, 这也太傻瓜了吧.

就是这么傻瓜...
有兴趣,去查阅一下stl的智能指针

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-19 08:05
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
类似于这样
struct foo
{
    static size_t num = 0;

    foo() { ++num; } // 只要调用这个默认构造函数,num就加1
    其他(非缺省构造们、拷贝构造、赋值操作、析构 等)类似
}
2013-04-19 08:41
jxlcs
Rank: 1
等 级:新手上路
帖 子:30
专家分:1
注 册:2008-7-27
收藏
得分:0 
额 看来是我想多了。
本以为还能有自动判断构造函数被调用并计数的方法呢。

谢谢各位
2013-04-19 14:40
快速回复:计算类对象被创建,复制,赋值或者删除的次数问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023964 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved