01 2019 档案
类的向上转型(安全)向下转型(不安全)
摘要:类其实也是一种数据类型,也可以发生数据类型转换,不过这种转换只有在基类和派生类之间才有意义,并且只能将派生类赋值给基类,包括将派生类对象赋值给基类对象、将派生类指针赋值给基类指针、将派生类引用赋值给基类引用,这在 C++ 中称为向上转型(Upcasting)。相应地,将基类赋值给派生类称为向下转型(
阅读全文
类的继承之构造函数和析构函数的顺序
摘要:结果是: parent's construction functionsomeThing's construction functionchild's construction functionchild's destructor functionsomeThing's destructor fun
阅读全文
父类和子类的截断现象
摘要:当这样声明时: Sub mySub; Super super = mySub; super.someMether(); //这个调用的是Super类内的someMether(); 可以这样理解:Super是一个小盒子,Sub时一个大盒子,因为Sub继承了Super,所以在Sub里边就会有独属于自己的
阅读全文
派生类重写方法
摘要:首先声明的时只有在父类的方法前写上virtual关键字,派生类才能重写这个方法, 建议在派生类的后边写上override,这并非是关键字,但是却起着关键字的作用, override由两个作用: 1.在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定
阅读全文
运算符重载总结(大全)
摘要:运算的结果: AAAEEEvalue : 3AAAEEEvalue : 4AAAEEEvalue : 6AAAEEEQQQ==运算符运行! 这样子是我们期望的结果,但是当我们把类内注释的部分取消注释时,会发现是这样的结果! !!!!!EEEvalue : 3!!!!!EEEvalue : 6AAAE
阅读全文
运算符重载方法3
摘要:上两节可以这样运算: A a1(1); A a2(4); a1 = a2 + 2; 但是这样的话就不行了: a1 = 2 + a2; 因为A对象调用operator+时必须在运算符+的左边,这是C++语言定义的方式。 我们可以这样子需改:在类内声明:friend A operator +(const
阅读全文
运算符重载方法2
摘要:C++允许自己编辑自己版本的加号,以正确处理类, value : 11string : AAAABBBB 在operator和+之间可以有空格也可以没有空格,operator+是一个整体就像是函数名f00,add一样,如果在类A中编写了operator+的方法,那么 A a3 = a1 + a2;这
阅读全文
运算符重载方法1
摘要:结果是: value : 4value : 5value : 9 在方法的是现实中创建了一个newA的A,返回的是newA而不是newA的引用,否则程序报错,因为add()方法结束后newA超出作用域,因此被销毁返回引用将会是悬挂引用。
阅读全文
C++友元函数
摘要:上述例子中: B是A的友元类,这就意味着B的对象和方法可以访问A的任意数据成员和方法,因为友元类可以访问private和protected成员,这就显得相当不安全 第一步先声明class A,这是为了在B的成员函数能够接收到A的引用, 第二步在A中声明B的函数setValue为友函数 第三步在类外定
阅读全文
类的嵌套
摘要:class1.h文件中: #ifndef CLASS1_H_ #define CLASS1_H_ #include #include class class1 { public: class class2 { public: class2(); class2(const class2 & src); class2& operator = (const class2 & rhs); pri...
阅读全文