复杂函数的构造和析构
发布网友
发布时间:2022-05-25 14:53
我来回答
共1个回答
热心网友
时间:2023-11-06 00:08
inline不inline,并不会影响构造函数的默认语义,不会因为不是inline的,就不执行基类的构造。并且分析在外的构造函数,仍然可能是inline的。如果构造函数过于复杂,那么就是写在类定义内,仍然是不会被inline的。
我认为原因是这样的:C++提倡实现与接口相分离,声明中,只给出需要的参数,甚至只是参数类型,而没有参数名。如果你写在声明中,不是要给出函数体,那样实现代码大家都能看到了,也许直接去改写你的.h,然后再重新编译,以达到对private成员的直接控制,这样不利于封装。C++的设计,使得一般的具体编译器实现都能做到,把声明放在.h中,实现放在.cpp中,编译生成.obj,把.cpp文件删除掉(或者就是不发放给使用的用户),使用者只要这个.obj和.h,就可以将别人实现的代码库,并到自己的程序中用。如果构造函数是在类定义内直接给出代码的,这就等于让用户随便改了。它可能比别的一般函数负面效果还大。