构造函数能否与类名不一致?异常代码可运行原因咨询
构造函数名称能否与类名不同?
哈哈,这个问题我刚好碰到过类似的情况,给你理清楚:
核心规则:构造函数必须与类名一致
在绝大多数主流面向对象编程语言(比如C++、Java)里,构造函数的名称必须和类的名称完全匹配(C++区分大小写,Java也一样)。如果一个成员函数的名字和类名不一样,那它本质上就是个普通的成员函数,根本不是构造函数——编译器不会把它当成构造函数来处理。
你看到的现象原因:代码根本没被编译
你发现的那段“构造函数名称和类名不同”的代码能“存在”,核心原因是这个类的文件从未被编译过——它不在Makefile的源码列表里,所以编译器从来没读取、检查过这段代码。
简单说,这段代码就是躺在文件里的“无效代码”,不管语法对不对、符不符合语言规则,只要没被编译器处理,就不会触发报错,也不会对程序运行有任何影响。要是哪天有人把这个类的文件加入Makefile编译列表,编译器马上就会抛出错误:要么提示找不到合法的构造函数(如果类里没有其他正确的构造函数),要么那个“假构造函数”会被当成普通函数处理。
内容的提问来源于stack exchange,提问作者Seong
相关产品推荐
相关产品推荐

