众所周知C++包罗万象,支持很多范式。
C++语言似乎就是想包容一切其他语言的优点,讲选择某写范式的权利留给语言使用者,这对于程序员来说,意味着自由。但是太大的自由往往意味着犯错,东西太广阔了,总有记不住的某些细节,譬如下面的代码
#include <iostream>
using namespace std;
class TestClass{
private:
int data;
public:
TestClass(): data(0){}
//explicit
TestClass(int data): data(data){}
int getData(){
return data;
}
};
int main(int argc, char *argv[])
{
TestClass tc(10);
tc = 11;
cout<<tc.getData()<<endl;
return 0;
}
tc = 11;
这样的代码也能编译通过且赋值成功,真的很灵活。但是灵活的同时会造成程序的可读性变得很差,不加注意可能会产生某些莫名奇妙的bug;
其实我更加喜欢严格的有些偏执的代码,严格有些偏执的编译器,让程序员减少出错的机会。
幸好C++也考虑到了严格的禁止这种隐式类型转换,只要打开上述代码中的 //explicit 注释, 下面的直接赋值就会被编译器查出编译不过
原文链接: https://www.cnblogs.com/lovelyxia/archive/2010/12/18/1910230.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/18930
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!