灵活的C++

众所周知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/p/1910230.html