0
点赞
收藏
分享

微信扫一扫

《高质量C++/C编程指南》读书笔记三


每个类只有一个析构函数和一个赋值函数。可有多个构造函数。



把对象的初始化放在构造函数中,把清除工作放在析构函数中。然后编译器会自动进行初始化和清除工作。



构造函数和析构函数没有返回值类型。



9.2构造函数的初始化列表



位于函数参数表之后,{ }之前,类的const常量只能在初始化列表中初始化,



9.3构造函数的次序



构造从类的最根层调用,首先调用基类的构造函数,然后调用成员对象的构造函数。析构函数与构造函数相反,该次序是惟一的。



注:成员对象初始化的次序只由成员对象在类中的声明次序决定。因为类的声明是唯一的。



9.8如何在派生类中实现类的基本函数。



如果类中存在继承关系:



1.派生类的构造函数应在其初始化列表中调用基类的构造函数。



2.基类和派生类的析构函数应为虚函数(virtual)



3.编写派生类的赋值函数时,注意不要忘记对基类的数据成员进行重新赋值。





10.类的继承和组合



对象是类的实例。



10.1继承



假设A是基类,B是派生类,那么B将继承A的数据和函数。



#include<iostream>
using namespace std;
class A
{
public:
void Func1(void )
{
cout << "func1" << endl;
}
void Func2(void )
{
cout << "func2" << endl;
}

};
class B :public A
{
public:
void Func3(void )
{
cout << "func3" << endl;
}
void Func4(void )
{
cout << "func4" << endl;
}
};
int main()
{
B b;
b.Func1();
b.Func2();
b.Func3();
b.Func4();
system( "pause");
return 0;
}


《高质量C++/C编程指南》读书笔记三_派生类




规则:



1.如果类A和类B毫无相关,不可以为了多了让B一些无相关的功能,就继承A。



2.若在逻辑上B是A的一种,并且A的所有功能和属性对B都有意义,则B继承A 的函数和功能。



10.2组合



若A是B的一部分,则不允许B从A派生。而是应组合。



#include<iostream>
using namespace std;
class Eye
{
public:
void Look(void );
};
class Nose
{
public:
void Smell(void );
};
class Mouth
{
public:
void Eat(void );
};
class Ear
{
public:
void Listen(void );
};
class Head
{
public:
void Look(void ) { m_eye.Look(); }
void Smell(void ) { m_nose.Smell(); }
void Eat(void ) { m_mouth.Eat(); }
void Listen(void ) { m_ear.Listen(); }
private:
Eye m_eye;
Nose m_nose;
Mouth m_mouth;
Ear m_ear;
};

int main()
{
Head h1;
h1.Eat();
h1.Listen();
h1.Look();
h1.Eat();
system( "pause");
return 0;
}



第十一章:



11.1使用const 提高函数的健壮性。



11.1.1使用const修饰函数的参数。



const只能修饰输入参数。



如果输入参数采用指针传递。加const可以防止意外的修改指针。



《高质量C++/C编程指南》读书笔记三_派生类_02




举报

相关推荐

0 条评论