- 博客(10)
- 资源 (6)
- 收藏
- 关注
翻译 对象切片
当多态的处理对象时,传地址与传值有明显不同,如果使用对象而不是地址或引用进行向上映射,对象会被“切片”如程序:#include using namespace std;class base{ int i;public: base(int I = 0) : i(I){} virtual int sum() const {return i;}};class
2013-11-30 13:19:47 423
翻译 纯虚函数也可以有函数体
当: 我们希望基类不能产生对象,然而又希望将一些公用代码放在基类时,可以使用纯虚函数,并未纯虚函数定义函数体#include using namespace std;class base{public: virtual void v() const = 0; virtual void f() const = 0 { cout << "base::f()\n"; }};
2013-11-30 12:57:05 1573
翻译 virtual实现原理
1. 在没有virtual的情况下,以基类指针调用时编译器并不知道比基类更多的东西,通常调用函数的基类版本2. 当用virtual声明函数时,每当创建一个包含虚函数的类或者从包含虚函数的类派生的类时,编译器就创建一个VTABLE3. 如果派生类没有对基类的virtual函数进行重新定义,VTABLE中就填充基类的虚函数的地址4. 编译器会在类中放置一个VPTR,VPTR指向相应的VTA
2013-11-30 11:29:37 659
翻译 私有继承成员公有化
当私有继承时,基类的所有public成员都变成了private。如果希望他们中的任何一个是可视的,只要用派生类的public选项声明他们就可以了,例如:class base1{public: char f() const { return 'a'; } int g() const { return 2; } float h() const { return 3.
2013-11-30 09:22:49 522
翻译 名字隐藏
如果在派生类中定义了和基类同名的方法,那么基类中的方法就会被覆盖,在派生类中变得不可用,例如:#include class homer{public: //int doh(int) const {return 1;}// char doh(char) const {return 'd';} float doh(float) const {return 1.0;}};
2013-11-29 16:00:20 579
翻译 通过运算符重载实现类型转换
一. 除了可以通过构造方法实现自动类型转换,还可以通过运算符重载实现自动类型转换#include class three{ int i;public: three(int I = 0, int = 0) : i(I){}};class four{ int x;public: four(int X) : x(X){} operator three() const {
2013-11-28 09:55:24 562
翻译 重载操作符为成员函数和全局函数对于做操作数的限制
class number{ int i;public: number(int I = 0) { i = I; } const number operator+(const number& n) const { return number(i + n.i); } friend const number operator-(const number&, const numb
2013-11-28 09:24:04 610
翻译 c++返回效率
1. 临时对象 return obj(i); 注释:编译器明白,创建的对象没有其他需求,所以直接把这个对象创建在返回值外面的内存单元,所以仅需调用一次构造函数,并不会调用析构函数,效率比较高2. 创建本地对象,然后返回 obj o(i); return o; 注释:将发生三件事:首先,o被创建,于此同时构造函数被调用。然后,拷贝构造函数把o拷贝到返回值外部存储单元里。最后,当o在作用于结尾时,
2013-11-27 11:22:04 702
翻译 c++ 定义指向类成员的指针
#include struct simple{ int a; int f(float F) { std::cout << F << std::endl; return 1; }};int main(int argc, char* argv[]){ simple so; //指向成员变量的指针 int simple::*pm = &simple::a; so.*
2013-11-26 17:55:00 523
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人