别的不说什么了,c++的标准库里,绝大部分都是container类,所谓container,就是指这个东西是个装内容的容器,它不是活的,它存在的意义是让别人去操作,而不是它自发做什么动作,就好像一个水壶是装水的,倒水这个操作,是其他人call一个函数,而不是水壶自己有一个倒水的member function。从这个意义上来说,反而是c#和jave滥用了member function。
关于这点,其实在现代c++中到处可见,比如关于{}初始化,虽然很多人提倡全部用{}来初始化,但是事实上,很多code standard只有在容器类型的填充性质的初始化时才用{},其他类型的初始化或者有其他内部逻辑操作的,都采用()初始化更好。
现代c++,事实上,已经彻底摒弃了虚函数,模板的意义和各种optional, variant, tuple的出现,不光在于避免虚指针,更在于彻底避免在class layout中出现指针,强调编译时和trival plain struct,增加cpu cache hit rate,在一定程度上在代码层面融入硬件层面的信息
--
修改:ziqin FROM 60.191.0.*
FROM 60.191.0.*