直接在命令行窗口调用cl编译cpp文件 往往不能通过. 主要原因是一些头文件及可执行文件未在环境变量中设置.可以通过执行VSVAR32.BAT批处理文件来设置环境变量,注意vs2005跟2008的放置位置可能不同,如果不在cl.exe当前路径下,可以去/Common7/Tools目录下寻找. 批处理文件中主要是set命令临时配置的环境变量,所以开机之后需要重新运行该bat文件才能执行cl命令. 另附cl命令使用说明 CL.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32…
1, 钻石型多重继承如果不想要底部的类有重复的变量,则需要声明为virtual继承 class File{...}; class InputFile: virtual public File{..}; class OutputFile: virtual public File{....}; class IOFile: public InputFile, public OutputFile {...}; 2, 多重继承来的成员函数指向一边的指针不能访问另一边的函数 ////////////////…
1.C++支持多重继承,但是一般情况下,建议使用单一继承. 类D继承自B类和C类,而B类和C类都继承自类A,因此出现下图所示情况: A A \ / B C \ / D 而类D中会出现两次A.为节省内存空间,可以将B.C对A的继承定义为虚拟继承,而A就成了虚拟基类.又叫钻石继承,菱形继承,最后形成如下图所示情况: A / \ B C \ / D 2.在标准I/O库中的类都继承了一个共同的抽象基类ios,那个抽象基类管理流的…
前一段时间再次拜读<Inside the C++ Object Model> 深入探索C++对象模型,有了进一步的理解,因此我也写了四篇博文算是读书笔记: Program Transformation Semantics (程序转换语义学) The Semantics of Copy Constructors(拷贝构造函数之编译背后的行为) The Semantics of Constructors: The Default Constructor (默认构造函数什么时候会被创建出来) The…
多重继承(MI)描述的是有多个直接基类的类.与单继承一样,共有MI表示的也是is-a关系.例如,可以从Awiter类和Singer类派生出SingingWaiter类:class SingingWaiter : public Waiter, public Singer {...};MI可能会给程序员带来很多新问题.其中两个主要的问题是:从两个不同的基类继承同名方法:从两个或更多相关基类那里继承同一个类的多个实例.在下面的例子中,我们将定义一个抽象基类Worker,并使用它派生出Waiter类和S…