最近在学习C++对象模型的相关知识,其中遇到了数据类型绑定时机不同,造成结果不同,特此记录一下。直接贴代码:
typedef char* mytype;
Class A{
public:
void funca(mytype my){ ///-------------->mytype 为char* 全局变量
mytype myvalue ; /--------->mytype为int 成员类型
}
void funcb(mytype my); ///-------------->mytype 为char* 全局变量
typedef int mytype;
};
void A::funcb(mytype my){ --------->mytype为int 成员类型
return ;
}
此时funcb会报错,“int A::funb(A::mytype)”:“A”中没有找到重载的成员函数“ 。这里主要是成员函数的解析是在类全部定义完成后才会进行,在函数定义时的mytype 只能是全局类型,不同的是funcb ,类外的funcb函数中 ,mytype是类全部定义后后的int类型,因此会出现没有找到重载函数的情况。