编程札记

来源:互联网 发布:帝国cms 数据备份目录 编辑:程序博客网 时间:2024/06/05 06:42

1.只有启用/clr选项时(托管)的类才可以加访问修饰符

public class MyClass{...};

2.静态成员函数不可以同时声明virtual、const、volatile修饰符。

class base{
virtual static void func1();//错误
static void func2() const;//错误
static void func3() volatile;//错误

};
3.C++连接错误error LNK2001:未能解析的外部符号(unresolved external symbol),一般是由于未添加函数依赖的.lib文件:

方法一:在项目属性"连接"里添加.lib文件

方法二:#pragma comment(lib,"xxxxx.lib")

4.C++定义数组时数组名与"[]"之间必须有空格:

int a[]={...};  //错误

int a []={...};  //正确

5.在.h中已定义的可选参数在实现时不要再写默认值,静态方法不要再加static修饰符

static int TsWriteFile(const string &fileName, void *buffer, DWORD count, boolNO_EXIST_CREATE=false);

int TsWriteFile(const string &fileName, void *buffer, DWORD count, boolNO_EXIST_CREATE){...}

6. 为了兼顾移植性,提高效率,在写带有返回值函数(尤其是复杂数据类型)时应避免这种写法:

classA f(){classA a(...); return a}

应采用下面种写法:

classA f(){return classA(...);}

调用: classA s=f();

第一种写法会产生一个临时对象,在返回时会调用classA的复制构造函数,在classA含有较多数据成员时会产生不必要的开销(调高编译器的优化等级也许可以避免)。大部分编译器都对第二种写法做了默认优化。