51.指针符号代码是如何实现的
struct SStud
{
int nNumb;
char sName[20];
};
std::list<SStud> mylist;
list<SStud>::iterator it=mylist.begin();
it->nNumb=100;
52外壳类(iterator)
使对象看上去和指针非常相似,可以取值*和->,以及可以++和--等等
a.封装的是一个其他类的指针变量,例如iteartor中封装的是SNode*的指针变量;
b.*符号不是直接把SNode的内容取出来,取出来的是SNode中的data
c.->符号不是把SNode的数据区或指针区选择对象,选择对象是数据区内部的各种数据;
d.++和--符号并不是指针直接向附近位置偏移,而是类内的指针变量按照某种规则偏到另一个地址上
53浅拷贝实现代码:memcpy(&s1,&s2,sizeof(s1));
浅拷贝对于普通结构体就足够了,例如两个信息结构体对象之间的赋值和构造
(SStud s1=s2;)
必须是深拷贝的情况是要用到指针变量
54.单行行数一般为内联函数
55.系统中缺省存在的两种运算:是拷贝构造和opeartor=赋值
56.无名对象:
a.只有构造对象的语句,没有构造对象名
b.无名对象只限于当前行使用;
c.其析构函数是在离开该行瞬间执行
57系统缺省存在的两种运算
a.是拷贝构造和opearor=赋值,是浅拷贝执行的
自动转换
a.由指针到对象自动转换采用的是构造函数
b.由对象到指针的自动转换采用的是类型转换操作符(opeartor TYPE)
58定义对象时采用拷贝构造函数,对象定义好之后再使用对象时采用opeartor=
59.一种结构体输出函数:ostream&opeartor(ostream &o,const SStud &s)
{cout<<s....;
return o;}