Absolute C++心得(续2)

本文探讨了C++编程中的多种技巧与细节,包括隐藏帮助函数的最佳实践、流变量的特性、文件读取的测试方法、类继承时构造与析构函数的调用顺序、私有成员的访问方式及虚函数的绑定机制。
21、有两种用于隐藏帮助函数的好方法:
1)如果帮助函数需要调用函数,则将帮助函数声明为类的私有成员函数。

2)如果无需调用对象,则可以把帮助函数设置为类的静态成员函数。但是将帮助函数放在类的实现文件的未命名空间中,更好!

22、我们可以按照通常的方式声明一个流变量,但是这些变量在一些情况下不能像其他变量那样使用。不能使用一个赋值表达式来
为一个流变量赋值。可以使用一个流类型的参数,但是该参数必须是一个引用调用参数,而不能是一个传值调用参数。形如:
ostream& operator <<(ostream& out,class a);

23、测试是否读到文件尾的方法:
1)利用eof()来判断。例如:
char next;
inStream.get(next);
while(!inStream.eof())
{
cout << next;
inStream.get(next);
}
这种方法当读到最后一个字符时,inStream.eof()仍为false,只有再次读的时候,才会变为true。
2)利用提取操作符读文件时返回一个布尔值。(inStream >> next),返回false表示读到文件尾。

24、#include <iomanip>包含setw,setprecision等方法。都是设置后的下一次生效。

25、如果类B派生自类A,类C派生自类B,那么当类C的对象被创建时,首先调用的是类A的构造函数,其次是类B的构造函数,最后才
是执行类C的构造函数的其他部分。
相反的,如果是类C的对象被析构时,首先调用类C的析构函数,然后是类B的析构函数,最后才是类A的析构函数。

26、如果没有包含对基类构造函数的调用,那么在调用派生类构造函数时会产生对基类默认(无参)构造函数的自动调用。

27、基类的私有成员变量(或私有成员函数)在基类的声明和实现之外是不可以直接访问的,即使在派生类的成员函数的定义
也是不可以访问的。

28、构造函数、析构函数和赋值操作符不可被继承。但是,在为派生类定义重载的赋值操作符和复制构造函数时,它们可以被使用
并且几乎在所有情况下都必须使用。
1)如果Derived是派生自Base,那么类Derived中重载的赋值操作符的定义的开始部分通常会像下面那样:
Derived& Derived::operator =(const Derived& rightSide)
{
Base::operator =(rightSide);
...
}
2)如果Derived是派生自Base,那么类Derived定义复制构造函数中,通常是使用基类Base的复制构造函数来设置继承而来的
成员变量及其数据。代码的开始部分通常就像下面这样:
Derived::Derived(const Derived& Object) : Base(Object)
{
...
}

29、在一个类的定义和实现中,可以访问这个类的任何对象的私有成员,而不仅仅是当前调用对象的私有成员。例如:
void classA::func(classA& other)
{
other.a;//这样写是对的,虽然a是类classA的私有成员变量。
}

30、如果一个函数是虚函数,并且在某个派生类给出了其新定义,那么对于该派生类的任何对象而言,它总是使用自己给出的虚
函数定义,即使该虚函数在父类的某个函数的定义中被间接调用。这种方法叫做后绑定。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值