c++程序中要对某个函数的调用次数进行统计,可行的方法有哪些
有选项的(1)在该函数中创建普通变量(2)在该函数中创建静态变量(3)在该函数中创建const常量(4)创建全局变量(5)创建全局的const常量(6)创建这个类的普通成...
有选项的
(1)在该函数中创建普通变量
(2)在该函数中创建静态变量
(3)在该函数中创建const常量
(4)创建全局变量
(5)创建全局的const常量
(6)创建这个类的普通成员变量
(7)创建这个类的静态成员变量
如果要统计某个类,创建对象的次数,在以上所有方法中,最佳的是——? 展开
(1)在该函数中创建普通变量
(2)在该函数中创建静态变量
(3)在该函数中创建const常量
(4)创建全局变量
(5)创建全局的const常量
(6)创建这个类的普通成员变量
(7)创建这个类的静态成员变量
如果要统计某个类,创建对象的次数,在以上所有方法中,最佳的是——? 展开
4个回答
展开全部
那位热心网友说的对
如果是普通的程序话可以用一个全局变量,初始化为0,在函数体里面 ++,既每调用一次就自己+ 1来计算调用次数
如果是计算类成员函数的话,用static成员就可以了
如果是普通的程序话可以用一个全局变量,初始化为0,在函数体里面 ++,既每调用一次就自己+ 1来计算调用次数
如果是计算类成员函数的话,用static成员就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先排除法,const都是不行的,因为是常量,不能改变其值,不能用来统计。所以(3)在该函数中创建const常量和(5)创建全局的const常量排除。
然后再说普通成员变量:当调用时就存在,退出函数时就消失,果断不行,无论是在类中还是在函数中,都不适合。(1)在该函数中创建普通变量和(6)创建这个类的普通成员变量,没了。
现在只剩下静态变量和全局变量了。
看一下静态变量的特点:
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。
对于是选择(2)在该函数中创建静态变量还是(7)创建这个类的静态成员变量,最优选择(7)。
个人见解,有错请批评指正,谢谢。
然后再说普通成员变量:当调用时就存在,退出函数时就消失,果断不行,无论是在类中还是在函数中,都不适合。(1)在该函数中创建普通变量和(6)创建这个类的普通成员变量,没了。
现在只剩下静态变量和全局变量了。
看一下静态变量的特点:
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。
对于是选择(2)在该函数中创建静态变量还是(7)创建这个类的静态成员变量,最优选择(7)。
个人见解,有错请批评指正,谢谢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-01-08
展开全部
写个静态变量赋给初值0。然后写个++不就行了?
Type fun()
{
static int num=0; //这句仅会执行一次
num++; //每次调用都会执行
...
}
——————
如果函数外面要用到次数就用全局变量嘛~~
int num=0;
Type fun()
{
num++;
...
}
Type fun()
{
static int num=0; //这句仅会执行一次
num++; //每次调用都会执行
...
}
——————
如果函数外面要用到次数就用全局变量嘛~~
int num=0;
Type fun()
{
num++;
...
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询