我是一个C++初学者,刚学完函数,现在在学类,突然看到类里面一个函数声明的时候形参表是空的,没见过~
举个例子吧doubleSales_item::avg_price()const{if(sold)returnrevenue/sold;elsereturn0;}这是类的函...
举个例子吧
double Sales_item::avg_price ( ) const
{ if (sold)
return revenue/sold;
else
return 0;
}
这是类的函数,形参表是空的, 函数体里面又用到了sold 这么一个变量,感觉有点不懂了,函数里面用的,一般不都是在形参表里声明吗? 或者是在函数体里声明,这个什么都没有啊。有点糊涂了,请高人指点迷津,谢谢啦~ 展开
double Sales_item::avg_price ( ) const
{ if (sold)
return revenue/sold;
else
return 0;
}
这是类的函数,形参表是空的, 函数体里面又用到了sold 这么一个变量,感觉有点不懂了,函数里面用的,一般不都是在形参表里声明吗? 或者是在函数体里声明,这个什么都没有啊。有点糊涂了,请高人指点迷津,谢谢啦~ 展开
展开全部
这个是变量的作用域问题,同C一样,C++中也存在作用于,比如局部,全局,文件作用域等C中拥有的,另外还有类作用域,命名空间作用域等,使用作用域可以减少名字冲突等;
下面是根据你的程序和自己的经验猜测的:
在你的这个程序里变量revenue和sold都在类Sales_item中定义了,而且avg_price 是类Sales_item的一个成员函数,所以在这个函数中revenue和sold都是可见的,也就是在函数avg_price中可以直接被访问。
类的定义文件大概如下,文件名为sales_item.h:
#ifndef SALES_ITEM
#define SALES_ITEN
class Sales_item{
public:
……
double avg_price ( )const;
private:
doble revenue;
double sold;
……
};
#endif
类的实现文件如下,文件名为 sales_item.cpp:
#include"sales_item.h"
……
double Sales_item::avg_price ( ) const
{ if (sold)
return revenue/sold;
else
return 0;
}
……
下面是根据你的程序和自己的经验猜测的:
在你的这个程序里变量revenue和sold都在类Sales_item中定义了,而且avg_price 是类Sales_item的一个成员函数,所以在这个函数中revenue和sold都是可见的,也就是在函数avg_price中可以直接被访问。
类的定义文件大概如下,文件名为sales_item.h:
#ifndef SALES_ITEM
#define SALES_ITEN
class Sales_item{
public:
……
double avg_price ( )const;
private:
doble revenue;
double sold;
……
};
#endif
类的实现文件如下,文件名为 sales_item.cpp:
#include"sales_item.h"
……
double Sales_item::avg_price ( ) const
{ if (sold)
return revenue/sold;
else
return 0;
}
……
展开全部
额。。。我学C的,C++懂一点吧,在C++里面 形参表为空表示不需要任何参数,而函数本身也可以定义变量的,所以不是必须用形参表里面的声明的。。。sold变量是不是你在类里面定义的变量,如果是的话就可以用的
这是一个局部变量和作用域的问题了,自定义函数里面应该有提过的吧,貌似在类里面定义的变量是可以在整个类里面用的,也就是说可以在函数里面用,但是相对的,在函数里面定义的变量只能在函数内用。
类就像是一个大圆,里面有函数有变量,像是一些小圆,而这些小圆相互之间可以有交集,所以函数可以用类里面的变量。
而函数里面定义的变量就像是更小的圆,这些小圆被局限在函数这个较大的圆里了,所以外面就不能用它们了。
这是一个局部变量和作用域的问题了,自定义函数里面应该有提过的吧,貌似在类里面定义的变量是可以在整个类里面用的,也就是说可以在函数里面用,但是相对的,在函数里面定义的变量只能在函数内用。
类就像是一个大圆,里面有函数有变量,像是一些小圆,而这些小圆相互之间可以有交集,所以函数可以用类里面的变量。
而函数里面定义的变量就像是更小的圆,这些小圆被局限在函数这个较大的圆里了,所以外面就不能用它们了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数可以用到的变量不只是形参表里,或者函数体里声明的,还有那些函数体前和同类里定义过的,比如:
int sold;
double Sales_item::avg_price ( ) const
{ if (sold)
return revenue/sold;
else
return 0;
}
或者:
class A
{
int sold;
public:
double avg_price ( ) const;
};
double Sales_item::avg_price ( ) const
{ if (sold)
return revenue/sold;
else
return 0;
}
我的邮箱:sfqs2011@163.com
有问题可以交流
int sold;
double Sales_item::avg_price ( ) const
{ if (sold)
return revenue/sold;
else
return 0;
}
或者:
class A
{
int sold;
public:
double avg_price ( ) const;
};
double Sales_item::avg_price ( ) const
{ if (sold)
return revenue/sold;
else
return 0;
}
我的邮箱:sfqs2011@163.com
有问题可以交流
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个sold,有可能是一个全局变量。也有可能是类的成员变量。对于类该变量是可见的。所以可以使用,函数声明中,形参当然是可以为空的。说明在函数调用是,不需要传参数。而且这个函数是Const函数,是不会修改变量的值,有参数反而很怪了。这个函数主要功能就是,返回一个值而已,而且不修改,变量的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数的形参本来就是可有可无的。没形参的函数是允许的。这里的sold既然不在形参表里,它可以是全局变量,也可以是这个类的成员变量。你可以搜一下这个变量,看看它定义在哪里。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询