C++范围

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.定义:构造函数是类的特殊成员函数,构造函数创建类对象,初始化数据成员。功能:在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态,构造函数在对象被创建时由系统自动调用。

特点:

1)构造函数的函数名与类名相同。2)构造函数可以重载。

3)构造函数没有返回值,不能指定返回值类型,即使void也不可以。

4)构造函数被声明为公有成员函数,编译器在遇到对象声明语句时,会自动生成对构造函数的调用语句。5)可以在程序中调用构造函数创建无名对象。

2.功能:用一个已经存在的对象去初始化一个新的同类对象。

特点:

1)该函数名与类同名,因为它也是一种构造函数,并且该函数也不被指定返回类型;

2)该函数只有一个参数,并且是对某个对象的引用;

3)每个类都必须有一个拷贝构造函数;

4)如果程序员没有显式地定义一个拷贝构造函数,那么,C++编译器会自动生成一个缺省的拷贝构造函数.

5)拷贝构造函数的目的是建立一个新的对象实体,所以,一定要保有证新创建的对象有着独立的内存空间,而不是与先前的对象共用。

情况:

1)用类的一个对象去初始化该类的另外一个对象,

2)函数的形参是类的对象,调用函数进行形参和实参结合时,

3)函数的返回值是类的对象,函数执行完成返回调用者时,拷贝构造函数会被调用。

3.友元函数的声明:在类中声明非成员函数时,在声明前标上关键字friend,即为有缘函数

友元类的声明:如果A类为B类的友元类,则声明的一般语法形式如下:class B

{

... // B类的成员声明

friend class A;

}

4.种类:静态数据成员和静态成员函数

静态数据成员特点特点:

1)声明前有关键字static,初始化不应该被放在头文件中。

2)静态数据成员被类的所有对象所共享,包括该类派生类的对象。

3)静态数据成员可以成为成员函数的可选参数,而普通数据成员则不可以。4)静态数据成员的类型可以是所属类的类型,而普通数据成员则不可以。

5)静态数据成员的值在const成员函数中可以被合法的改变

静态成员函数特点:

1)静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用类成员函数指针来储存。

2)静态成员函数不可以调用类的非静态成员。因为静态成员函数不含this指针。3)静态成员函数不可以同时声明为virtual、const函数。

静态成员是可以独立访问的,也就是说,无需创建任何对象实例就能访问。

5.定义:一个对象作为另一个类的成员时,该对象称为类的子对象。

初始化:子对象的初始化列表放在类的构造函数的后边,并用冒号进行分割分隔。顺序:以其在类中声明的顺序构造

6.(类B公有继承类A,则类B是类A的子类型。如果类B是类A的子类型,则:)

内容:

1)可以将类B的对象赋给类A的对象

2)可以将类B对象的地址值赋给指向类A对象的指针

3)可以将类B对象赋值给类A对象的引用

7、原因:引入虚基类的目的是为了解决二义性问题,使得公共基类在它的派生类对象中只产生一个基类子对象。

特点:如果虚基类定义了带参构造函数,同时没有定义默认形式的无参构造函数,那么在整个继承结构中,直接或间接继承虚基类的所有派生类都必须在构造函数的成员初始化列表中包括对虚基类的初始化。

为了保证虚基类对象只被构造一次,规定只在创建对象的最远派生类的构造函数中调用虚基类的构造函数,而该派生类的基类构造函数中忽略对虚基类构造函数的调用。

8.静态联编:联编工作在编译阶段完成,由于在程序开始执行之前进行,因此又称为早期联编或前联编。在编译、连接的过程中,系统就可以根据类型匹配等特征确定程序中操作调用与执行该操作的代码的关系,即确定了某一个同名标识到底要调用哪一段代码。重载和参数多态,其同名操作的具体对象能够在编译、连接阶段确定,可以通过静态联编解决。

动态联编:联编工作在程序运行阶段完成,也称为晚期联编或后联编。在编译、链接过程中无法解决的联编问题,要等到程序开始执行之后才能确定,包含多态中操作对象的确定就是通过动态联编完成的。

9.联系:建立了类模板后,就可以用以下方法创建模版类:类名<类型实参数表>对项名;

区别:类模板只是模板类的一个抽象定义,不涉及具体的数据类型,而模版类是类模板的一个具体实例,涉及到参数中的具体类型。

10.包含多态:包含多态是指通过子类型化,1个程序段既能处理类型T的对象,也能够处理类型T的子类型S的对象

类型参数化多态:类型参数化多态是指当1个函数(类)统一地对若干类型参数操作时,这些类型表现出某些公共的语义特性,而该函数(类)就是用来描述该特性的。

重载多态:重载是指用同一个名字命名不同的函数或操作符。

强制多态:强制是指将一种类型的值转换成另一种类型的值进行的语义操作,从而防止类型错误。

四、

1. #include

using namespace std;

class fushu

{

public:

fushu()

{

shi=0.0;

xu=0.0;

}

fushu(double x,double y)

{

shi=x;

xu=y;

}

friend fushu operator +(fushu&,fushu&);

friend fushu operator -(fushu&,fushu&);

friend std::ostream& operator <<(std::ostream &oo,fushu& s1);

friend std::istream& operator >>(std::istream &oo,fushu& s1);

protected:

double shi;

double xu;

};

fushu operator +(fushu& s1,fushu& s2)

{

double x1=s1.shi+s2.shi;

double x2=s1.xu+s2.xu;

相关文档
最新文档