- 论坛徽章:
- 0
|
本帖最后由 liulover5 于 2014-08-20 09:23 编辑
官网下载Google Chrome离线安装包
2014-01-22 22:04 100人阅读 评论(0) 收藏 举报
一直在用Google Chrome浏览器,不过安装过的朋友都知道,从Google官方下载安装会先下载一个小的安装管理程序,安装时再从下载所需的安装文件,速度很慢,很不爽。
现在终于在网上找到了在官方下载Google Chrome浏览器的方法。
下载chrome离线安装包的方法
只需要在原来的下载网址上加上standalone=1 参数,你下载下来的就是离线安装包,而不是几百K的安装管理程序。
如,原来的下载地址为http://www.google.com/chrome/eula.html
更改后变为http://www.google.com/chrome/eula.html?standalone=1
中文版安装包的地址为http://www.google.com/chrome/eul ... mp;amp;standalone=1
http://pan.baidu.com/s/106DMYds
提取码:flyw
虚函数是动态绑定的基础。
是非静态的成员函数。
虚函数的概念:基类中有这么一些函数,这些函数允许在派生类中其实现可以和基类的不一样。
本质:不是重载声明而是覆盖。即派生类中的一个函数的声明,与基类中某一个函数的声明一模一样,包括返回值、函数名、参数个数、参数类型、参数次序都不能有差异
如果需要通过基类的指针指向派生类的对象,并访问某个与基类同名的成员,那么首先在基类中将此同名函数说明为虚函数,这样,通过基类类型指针,可使属于不同派生类的不同对象产生不同行为,实现多态
在类的声明中,在函数原型之前写virtual。
virtual 只用来说明类声明中的原型,不能用在函数实现时。
具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。
调用方式:通过基类指针或引用,执行时会根据指针指向的对象的类,决定调用哪个函数。
何时需要虚析构函数?
当你可能通过基类指针删除派生类对象时
如果你打算允许其他人通过基类指针调用对象的析构函数(通过delete这样做是正常的),并且被析构的对象是有重要的析构函数的派生类的对象,就需要让基类的析构函数成为虚拟的。
纯虚函数是一个在基类中声明的虚函数
声明为纯虚函数后,基类中不再给出函数的实现,纯虚函数的函数体由派生类给出
带有纯虚函数的类称为抽象类
class 类名 {
virtual 类型 函数名(参数表)=0;
//纯虚函数
...
}
作用
通过抽象类为一个类族建立一个公共的接哭器,使它们能更有效地发挥多态特性
抽象类声明了一族派生类的共同接口,而接口的完整实现,即纯虚函数的函数体,要由派生类定义
抽象类为抽象和设计的目的而声明,将有关的数据和行为组织在一个继承层次结构中,保证派生类具有要求的行为
对于暂时无法实现的函数,可以声明为纯虚函数,留给派生类去实现
注意
抽象类只能作为基类来使用
抽象类自身无法实例化,即不能声明抽象类的对象
只能通过继承机制,生成抽象类的非抽象派生类,然后再实例化
构造函数不能是虚函数,析构函数可以是虚函数
最好记的邮箱:手机号码@163.com
无需注册,知道手机号就能给他发邮件 了解详情>>
面向过程 功能
面向对象 数据
类 类是一种用户自定义类型 类是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。
对象 自然界是由实体(对象)所组成。
继承 保持已有类的特性而构造新类的过程称为继承。
封装 将抽象出的数据成员、代码成员相结合,将它们视为一个整体。
多态 同一名称,不同的功能实现方式。实现:重载函数和虚函数——见第8章
是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为。
函数重载 运算符重载 虚函数
继承与派生 是C++中支持层次分类的一种机制,
内联成员函数 将函数体放在类的声明中。或者 使用inline关键字。
模版
接口
this指针存在于类的成员函数中,指向被调用函数所在的类实例的地址。
this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,
编译器会自动将对象本身的地址作为一个隐含参数传递给函数。
重载 形参类型 形参个数 不同
C++中,除下列运算符外,所有运算符均可重载:. .* :: ?:
虚函数 这些函数允许在派生类中其实现可以和基类的不一样。
纯虚函数 纯虚函数是一个在基类中声明的虚函数 带有纯虚函数的类称为抽象类
抽象类只能作为基类来使用
抽象类自身无法实例化,即不能声明抽象类的对象
只能通过继承机制,生成抽象类的非抽象派生类,然后再实例化
前向引用 向引用声明,但是在提供一个完整的类声明之前,不能声明该类的对象,也不能在内联成员函数中使用该类的对象。
拷贝构造函数 当用类的一个对象去初始化该类的另一个对象时系统自动调用拷贝构造函数实现拷贝赋值
向上转型
向下转型
构造函数不能是虚函数,析构函数可以是虚函数
组合 类中的成员数据是另一个类的对象。
虚函数是动态绑定的基础。
是非静态的成员函数。
虚函数的概念:基类中有这么一些函数,这些函数允许在派生类中其实现可以和基类的不一样。
本质:不是重载声明而是覆盖。即派生类中的一个函数的声明,与基类中某一个函数的声明一模一样,包括返回值、函数名、参数个数、参数类型、参数次序都不能有差异
如果需要通过基类的指针指向派生类的对象,并访问某个与基类同名的成员,那么首先在基类中将此同名函数说明为虚函数,这样,通过基类类型指针,可使属于不同派生类的不同对象产生不同行为,实现多态
在类的声明中,在函数原型之前写virtual。
virtual 只用来说明类声明中的原型,不能用在函数实现时。
具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。
调用方式:通过基类指针或引用,执行时会根据指针指向的对象的类,决定调用哪个函数。
何时需要虚析构函数?
当你可能通过基类指针删除派生类对象时
如果你打算允许其他人通过基类指针调用对象的析构函数(通过delete这样做是正常的),并且被析构的对象是有重要的析构函数的派生类的对象,就需要让基类的析构函数成为虚拟的。
纯虚函数是一个在基类中声明的虚函数
声明为纯虚函数后,基类中不再给出函数的实现,纯虚函数的函数体由派生类给出
带有纯虚函数的类称为抽象类
class 类名 {
virtual 类型 函数名(参数表)=0;
//纯虚函数
...
}
作用
通过抽象类为一个类族建立一个公共的接哭器,使它们能更有效地发挥多态特性
抽象类声明了一族派生类的共同接口,而接口的完整实现,即纯虚函数的函数体,要由派生类定义
抽象类为抽象和设计的目的而声明,将有关的数据和行为组织在一个继承层次结构中,保证派生类具有要求的行为
对于暂时无法实现的函数,可以声明为纯虚函数,留给派生类去实现
注意
抽象类只能作为基类来使用
抽象类自身无法实例化,即不能声明抽象类的对象
只能通过继承机制,生成抽象类的非抽象派生类,然后再实例化
构造函数不能是虚函数,析构函数可以是虚函数
class B; //前向引用声明
class A
{ public:
void f(B b);
};
class B
{ public:
void g(A a);
};
class Fred; //前向引用声明
class Barney {
Fred x; //错误:类Fred的声明尚不完善
};
class Fred {
Barney y;
};
static声明 静态成员是解决同一个类的不同对象间数据和函数共享问题的,
函数变量都分配在栈内存
成员函数的访问属性受到类的严格控制
公有静态成员函数可通过类名或对象名调用
一般非静态成员函数只能通过对象名调用
静态成员函数不与任何对象关联,因此若要在静态成员函数中访问对象的数据,要通过形参获得对象名
一个变通函数或类的成员函数可访问封装于另外一个类中的数据
友元关系是一个类主动声明哪些其他类或函数是朋友,进而可享受本类的访问特权
常类型的对象必须进行初始化,而且不能被更新。
常成员函数不更新对象的数据成员
一个项目划分为:
类定义文件(*.h)
类实现文件(*.cpp)
类的使用文件(*.cpp,主函数文件)
虚基类 用于有共同基类的场合 二义性带来过多的冗余数据,造成程序的混乱
class B1:virtual public B
主要用来解决多继承时可能发生的对同一基类继承多次而产生的二义性问题
在第一级继承时就要将共同基类设计为虚基类。
class B{ private: int b;};
class B1 : virtual public B { private: int b1;};
class B2 : virtual public B { private: int b2;};
class C : public B1, public B2{ private: float d;}
下面的访问是正确的:
C cobj;
cobj.b;
|
|