多个构造函数的内存使用情况c
我用c代码编写Nintendo DS(4MB RAM).我已经制作了一个按钮类来显示UI
like I described here中的按钮.为方便起见,我有四个独立的构造函数.我可以将它们全部压缩成一个构造,但这样会很不方便,因为我需要在构造它时使用所有参数.我的问题是:
在程序运行时,多个重载构造函数是否会占用每个对象更多的内存,或者编译器会自动剥离每个对象不需要的其他3个不必要的构造函数? 任何帮助表示赞赏.以下是构造函数的参数和解释: Button::Button(int x,int y,const char * const label) { //Set visibility to true as a default //Set length to String length } Button::Button(int x,const char * const label,bool isVisible) { //Set the length to the string length } Button::Button(int x,int length) { //set visibility to true as a default } Button::Button(int x,int length,bool isVisible) { //All the variables are specified using constructor } 解决方法
虽然我同意其他的答案,但是减少构造函数的数量并不会在对象存储成本方面为您节省任何费用,您可能只是为了方便起见.
它不一定是这样的:这就是default parameters的用途.你在这样的标题中构造构造函数的原型: class Button { Button ( int x,int length = -1,bool isVisible = true ); 注意最后两个参数后面的=.这意味着您不必提供这些,如果不提供,将使用该值.所以: new Button(1,2,"hello"); new Button(1,"hello",5,false); 都很好.你可以正常定义构造函数,虽然这里的长度字段有点特殊;如果它可能取决于标签的长度或用户提供的值,您需要知道差异.因此在初始化列表中,如果对应于长度arg的成员字段被称为length(不是我最喜欢的练习,但这里没关系): length (length > 0 ? length : label.length()) 如果用户arg大于0,则将初始化为初始化,默认值为-1,因此如果未提供该arg,则将使用label.length(). 请注意,参数必须按顺序进行,因此您应该考虑哪些参数最有可能使用.如果在这种情况下您希望允许指定任何默认参数而不指定另一个,则需要两个构造函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |