第四讲第四讲类和对象类和对象(3)

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

程序设计实习(I): C++程序设计序设计实(I)C序设计

第四讲类和对象(3)

成员初始化列表CClass::CClass(){

x=0;

y=1;

}

()(),y(){

CClass::CClass():x(0), y(1){

} //成员初始化列表

☐以下情况是必须:

⏹包含另一个类的成员

⏹成员是一个常量或是引用

4

class CMember{public:

CMember(int x){...} //显式声明构造函数,如果没有整数初始化

//则无法创建CMember 的一个实例

};

CMember* pm = new CMember; // Error CMember*pm =new CMember(2);CMember pm = new CMember(2); //OK

如果CMember 是另一个类的成员,如果要初始化,必须使用成员初始化列表

class CMyClass{

CMember m_member;public:

CMyClass();

}

CMyClass::CMyClass():m_member(2){5

...}

回顾及内容提要

☐主要概念

类对象成员变量☐语法细节

引用成员函数的写法⏹

类、对象、成员变量、成员函数

⏹引用、成员函数的写法⏹函数重载、缺省参数⏹对象的访问权限、友元⏹成员对象和封闭类⏹构造函数(复制构造函数)⏹析构函数、调用时机⏹const 成员和引用成员⏹常量对象和常量方法⏹

静态成员

this 指针

6

转换构造函数

☐定义转换构造函数的目的是实现类型的自动转换☐只有一个参数,而且不是复制构造函数的构造函数,一般就可以看作是转换构造函数

数一般就可以看作是

☐当需要的时候,编译系统会自动调用转换构造函数,建立一个无名的临时对象(或临时变量)

7

class Complex {

p g

public: float real, imag;

Complex( double f ) {

cout << "FloatConstructor called" << endl;

real = f ; imag = 0;

}

Complex( int i = 0 ) {

C l(i t i0){

cout << "IntConstructor called" << endl;

real=i;imag=0;

real = i; imag = 0;

}

~Complex() {

~Complex(){

cout << "Destructor called" << endl;

}

};

8

Complex c1 ; // Complex(0) c1 = {0, 0};

Complex c2 = 2; // Complex(2) c2= {2, 0}; Complex c2=2;//Complex(2)c2={20};

Complex c3 = 2.5; // Complex(2.5) c3 = {2.5, 0};

int main ()()

{

cout << "c1=" << c1.real << "+" << c1.imag << "i"

<< endl;

cout << "c2=" << c2.real << "+" << c2.imag << "i"

<< endl;

<

cout << "in main" << endl;

;转,时象c1 = 4; //调用转换构造函数,生成临时对象

Complex c4[2]={4, Complex(10)};

cout << "end main" << endl;

return 0;

}

9

输出:

IntConstructor called

IntConstructor called

FloatConstructor called

c1=0+0i

10+0i

c2=2+0i

in main

in main

IntConstructor called //调用转换构造函数

Destructor called // 临时对象消亡

IntConstructor called

IntConstructor called

end main

end main

Destructor called

Destructor called

Destructor called

Destructor called

Destructor called

Destructor called

10

Complex c1 ; // Complex(0) c1 = {0, 0};

Complex c2 = 2; // Complex(2) c2= {2, 0}; Complex c2=2;//Complex(2)c2={20};

Complex c3 = 2.5; // Complex(2.5) c3 = {2.5, 0};

int main ()()

{

cout << "c1=" << c1.real << "+" << c1.imag << "i"

<< endl;

cout << "c2=" << c2.real << "+" << c2.imag << "i"

<< endl;

<

cout << "in main" << endl;

p;时象

Complex c = 4; //不生成临时对象

Complex c4[2]={4, Complex(10)};

cout << "end main" << endl;

return 0;

}

11

相关文档
最新文档