Class1 myclass(someparameter);
int main(int argc, char* argv[])
{
myclass = Class1(anotherparameter);
}
我在文件范围内有一个å˜é‡ã€‚
我真的ä¸çŸ¥é“怎么说出我的问题。但基本上我æ£åœ¨å¤åˆ¶ä¸€ä¸ªç±»ï¼Œè¿™æ®µä»£ç 看起æ¥å¾ˆæ—¶é«¦ã€‚è¿™æ ·åšæœ‰ä»€ä¹ˆåŽæžœå—?我应该使用new
/ delete
å—?我能想到的一个潜在问题是,如果类包å«æŒ‡é’ˆï¼ˆä½†é‚£å¯ä»¥é€šè¿‡åˆ›å»ºå¤åˆ¶æž„é€ å‡½æ•°æ¥è§£å†³ï¼‰
ç”案 0 :(得分:2)
我认为全局å˜é‡é€šå¸¸æ˜¯ä¸å—欢迎的。但这并ä¸æ„味ç€å®ƒä»¬æ˜¯éžæ³•çš„或“åçš„é£Žæ ¼â€ã€‚在这ç§ç‰¹æ®Šæƒ…况下,我肯定会é¿å…使用全局å˜é‡......
ç”案 1 :(得分:1)
å‡è®¾ä½ 的课程å¯ä»¥æ£ç¡®å¤åˆ¶ï¼Œé‚£ä¹ˆæˆ‘没有看到任何内在错误。但它并ä¸æ˜¯é‚£ä¹ˆæœ‰æ•ˆï¼Œå› 为myclass实际上被åˆå§‹åŒ–了两次:一次声明它,å†æ¬¡æŒ‡å®šå¦ä¸€ä¸ªå®žä¾‹ã€‚
å¦‚æžœè¿™æ˜¯ä½ çš„é€»è¾‘è¦æ±‚,那没关系。å¦åˆ™ï¼Œæ‚¨å¯ä»¥æ高代ç 效率。
ç”案 2 :(得分:0)
ä½ æ‰€åšçš„事情没有错,虽然目å‰å°šä¸æ¸…楚这是什么æ„æ€ã€‚有时这ç§äº‹æƒ…是有æ¡ä»¶çš„ - 例如,如果命令行å‚数指定å˜é‡çš„替代值。您ä¸éœ€è¦ä½¿ç”¨newå’Œdelete ...在这ç§æƒ…况下,您è¦æ±‚编译器创建一个临时对象,然åŽå°†å…¶å¤åˆ¶åˆ°å…¨å±€å˜é‡ä¸ï¼ˆä½¿ç”¨å…¶operator=
),然åŽä¸´æ—¶å°†é”€æ¯ã€‚æ•ˆçŽ‡é€šå¸¸è‡³å°‘æ¯”ç›´æŽ¥æž„é€ å…·æœ‰æ‰€éœ€å€¼çš„å˜é‡æ›´å·®ï¼Œä½†åœ¨è¿‡æ—©æˆ–ä¸å¿…è¦çš„优化ä¸æ²¡æœ‰ä»»ä½•æ„义。
为了进行比较,请考虑:
std::string sep = "\n";
int main(...)
{
if (...)
sep = std::string("\r\n");
}
è¿™æˆ–å¤šæˆ–å°‘éƒ½æ˜¯ä¸€æ ·çš„ï¼Œå°½ç®¡è¿™é‡Œstd::string
临时的显å¼æž„é€ æ˜¯å¯é€‰çš„ï¼Œå› ä¸ºè¯¥ç±»ç¢°å·§æœ‰operator=(const char*)
。一切都好。