C++ 学习
wdkirchhoff
这个作者很懒,什么都没留下…
展开
-
C++ 重载操作符与转换
明智的使用操作符重载可以使类类型的使用像内置类型一样直观。重载操作符必须具有至少一个类类型或枚举类型的操作数,这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义。重载操作符并不保证操作数的求值顺序,尤其是,不会保证内置逻辑AND、逻辑OR和逗号操作符的操作数求值,在&&和||的重载版本中,两个操作数都要进行求值,而且对操作数的求值顺序不作规定,因此,重载&&、||或逗号操作符不是一种原创 2015-02-04 14:57:36 · 813 阅读 · 0 评论 -
C++ 类和数据抽象
1. 必须对任何const或引用类型成员以及没有默认构造函数的类类型的任何成员使用初始化式。有些成员必须在构造函数初始化列表中进行初始化。对于这样的成员,在构造函数函数体中对它们赋值不起作用。没有默认构造函数的类类型的成员,已经const或引用类型的成员,不管是哪种类型,都必须在构造函数初始化列表中进行初始化。2. 如果定义了其他构造函数,则提供一个默认构造函数几乎总是对的。通常,在默认构造函数中原创 2015-02-04 14:54:43 · 940 阅读 · 0 评论 -
一、为什么用CMake
Cmake可以通过让开发者描述build参数在一个简单地可以移植的文本文件里,这个文件能够被cmake用来产生类似于MS Visual Studio和Apple’s Xcode的项目文件,当然也有*NIX下的Makefile。Cmake给同一平台,多机开发环境的很多帮助:自动搜索所需要的程序,库,头文件的能力,这包含了环境变量和windows的注册表等信息能够在源码树外进行build,原创 2015-02-04 15:00:54 · 4806 阅读 · 0 评论 -
C++ 面向对象编程
面向对象编程基于三个基本概念:数据抽象、继承和动态绑定。在C++中,用类进行数据抽象,用类派生从一个类继承另一个类:派生类继承基类的成员。动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。c++中,多态性仅用于通过继承而相关联的类型的引用或指针c++中,基类必须指出希望派生类重定义哪些函数,定义为virtual的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不原创 2015-02-04 14:52:21 · 969 阅读 · 0 评论 -
C++ 复制控制
当对于类类型对象时,初始化的复制形式和直接形式有所不同:直接初始化直接调用与实参匹配的构造函数,复制初始化总是调用复制构造函数。复制初始化首先使用指定构造函数创建一个临时对象,然后用复制构造函数将那个临时对象复制到正在创建的对象。对于vector svec(5);编译器首先使用string默认构造函数创建一个临时值来初始化svec,然后使用复制构造函数将临时值复制到svec的每一个元素有些类需要完原创 2015-02-04 14:56:40 · 827 阅读 · 0 评论 -
C++ 多重继承,虚析构确定
来个例子就明了了:#includeusing namespace std;class Base1{public: virtual ~Base1(){ cout<<"Base1"<<endl; }};class Base2{public: virtual ~Base2(){ cout<<"Base2"<<endl;原创 2015-02-05 08:53:23 · 1470 阅读 · 1 评论 -
C++ 作用域域成员函数
#include#includeusing namespace std;class base{public: virtual int fcn() { cout<<"base::fcn()"<<endl; }};class D1:public base{public: // using base::fcn;//如果解注释的话,则在原创 2015-02-05 08:52:45 · 991 阅读 · 0 评论 -
C++ 虚继承
虚继承是一种机制,类通过虚继承指出它希望共享其虚基类的状态,在虚继承下,对给定虚基类,无论该类在派生层次中作为虚基类出现多少次,只继承一个共享的基类子对象,共享的基类子对象称为虚基类。举例:istream和ostream类对它们的基类进行虚继承,通过使基类成为虚基类,istream和ostream指定,如果其他类(如iostream)同时继承它们两个,则派生类中只出现它们的公共基类的一个副本。可以原创 2015-02-05 08:56:21 · 845 阅读 · 0 评论 -
C++ 继承中的二义性
当一个类有多个基类的时候,通过所有直接基类同时进行名字查找。多重继承的派生类有可能从两个或多个基类继承同名成员,对该成员如果不加限定的话,这样使用就是二义性的。即使两个继承的函数有不同的形参表也会产生错误,类似的,即使函数在一个类中是私有的而在另一个类中是公用的或受保护的,也同样是错误的。名字查找总是以两个步骤发生:首先编译器找到一个匹配的声明(若找到两个以致多个声明,就会产生二义性),然后,编译原创 2015-02-05 08:53:39 · 2113 阅读 · 0 评论