第一个问题是:如果一个函数跟对话框的类毫无关系,比如删除文件,有没有必要声明在头文件的对话框类的声明里面?是放在对话框类的声明里面比较好还是外面(全局)比较好?放在外面(全局)会不会造成不管这个类有没有初始化都会占用内存的问题?
class CTestDlg : public CDialog
{
public:
void DeleteSomeFiles();
...
}
还是
class CTestDlg : public CDialog
{
public:
...
}
void DeleteSomeFiles;第二个问题是:既然可以通过加两个冒号的形式调用全局函数,那声明成外部函数extern有什么必要呢?
比如:
class CTestDlg : public CDialog
{
public:
...
}
void DeleteSomeFiles();我可以在另外一个对话框里面直接使用::DeleteSomeFiles();,都不需要声明成外部的。
所剩分数全部奉上了。

解决方案 »

  1.   

    如果和任何类都无关的算法方面的函数,我一般会定义一个算法类。然后会放在app类中作为成员变量。
      

  2.   

    第一个问题:
    我常将要用到的“全局”变量、函数全部放到一个自定义的类中,然后声明这个类的变量为全局变量,这样到处都可以使用里面的函数了,但这样做是个不好的习惯,可以按照1楼那样,把这个变量声明在app类中。
    你把它定义为全局函数,在没有调用的时候应该也不会占用额外的内存。
    至于你是要放到对话框类中,还是全局,要看你的应用了,如果只是这个对话框用,那我看最好是放到对话框的类中,如果是多个地方用,就声明成“全局”的第二个问题:
    如果你不用extern声明的话,那你就必需包含那函数声明的头文件,否则你调用它肯定会编译不过。使用extern声明,是告诉编译器,这个函数是存在的,只不过不是在当前的程序段中而已