假定有如下的代码,请问此时两个ss函数的形参或者返回类型中,t1究竟是什么类型呢?是int类型还是double类型?
测试代码1:
#include
using namespace std;
typedef int t1;
class A
{
public:
void ss(t1 val){_val=val;cout<
运行结果以及分析:
那么从上述的运行结果中,我们可以看到第一个ss函数的形参所占内存大小为4bytes,故形参类型为int,为全局中定义的类型。
但是从上述的代码中我们是不能判断出第二个ss函数的形参是什么类型的,因此我们改进了测试代码。
测试代码2::
#include
using namespace std;
typedef int t1;
class A
{
public:
void ss(double val){_val=val;cout<
运行结果以及分析
从上面的运行结果中,我们可以看到此时的类成员变量_val的值为3.2,但是第二个ss函数却返回了3,故此时我们可以得到:第二个函数的返回类型为int,为全局中定义的类型。
到了这里,我们可能会问,如果在函数体中定义了一个t1类型的变量,它的类型到底是int还是double呢,于是博主给出以下的测试代码:
#include
using namespace std;
typedef int t1;
class A
{
public:
void ss(){t1 f=3.2;cout<
运行结果为:
故此时我们可以清晰的看到:若在函数体内定义了某个t1类型的变量,则该变量的类型为double。
对于类中成员函数的函数体的分析,会直到整个类的声明都出现了才开始。
而对于成员函数的形参列表和返回类型来说,还是会在编译器第一次遭遇时给出适当的决议(在该例中被决议为全局变量的类型)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)