----------------------继承: ,,,,(俺要主攻uc,还要回珠海工作)
1.子类继承父类方式:1.public 2.protected 3.private
通过public继承下来的,都不变
通过protected继承下来的,原有父类的public函数,将转化为protected来继承。
通过private继承下来的,原有父类的public ,protected 函数,将转化为private来继承。
2.Son类同名函数会覆盖掉父类的所有同名的函数,应为重载仅仅限于同一作用域内
3 . 四大函数:构造,拷贝构造,析构,赋值函数operator=,是不允许被继承,每个类都有自己的四大函数。
4. 虚继承会由最底层的子类来完成虚父类的初始化工作,中间类的对父类的初始化将被无视。(避免多个副本存在,空间的浪费)
5. 类也一样有内存空间的对齐。空类,则有1个字节表示存在。虚类隐士生成一个虚指针,所以至少有4个字节的存在空间。
6. 多个同类对象在类的内部可以互相调用,而不受限制约束。
7. 继承之后子类仍然有空间去存父类的继承下类的private成员,因为他会通过public函数访问到。
---------------------运算符重载等
1.static 成员不能在构造中初始化,因为是共享的所以要全局区域初始化(不加static的声明::)
2 . 构造(普通,拷贝)都支持初始化列表,且系统默认的都是浅拷贝,如果存在指针成员,那么我们必须重写四大函数
(1构造函数:用来开辟空间 (2拷贝构造:用来进行深度拷贝(3赋值函数operator=用来进行深度拷贝 (4析构函数:用于释放空间(多态要变成virtual)
3. Cwj cwj1=cwj2;//这东东调用的不是operator=函数,而是“拷贝构造函数”
4. C++单向传参用:const & C++双向传参用:&(一直这样用)
5. 只读对象只是不能访问会改变数据的函数罢了,其他都一样。 static对象只是作用区域放大了,其他的都一样。const函数不能改变数据,static函数不能访问非static数据成员。 bool (&getA() cosnt)[3]{}
6. bzero(a,sizeof(a)); memset(a,0,sizeof(a)); memcpy(a,4);malloc(2) calloc(3)-->memset()//给了空间就要memeset.
7. 指针作为返回值,是4个字节的拷贝,而char作为返回值是1个字节的拷贝,int float 也是4,所以不是什么东东都搞成指针返回才快,char就最快,int float和指针一样快。
8. 运算父重载,如果是friend << >> ,那么其调用顺序是根据(ostream& o,istring s)佐值由o充当,右值由s充当。顺序 不能反了哦。
9. void* operator new(size_t byets){return ::operator new(byets);}//void* malloc(size_t bytes);
void operator delete[](size_t bytes){return ::operator delete[](bytes);}//void free(void *p);realloc(str,25)
调用的是系统的全局函数new delete new[] delete[]运算符函数d
10.operator int(){return 3;}//强制类型转换重载是不需要返回值的,仅此一家而已。其他都是要返回值。这样了,我们就可以把对象当作int来使用了,他能够自动隐饰转换滴,因为有了这个int()重载。
11. 注意:存在指针成员的类,构造的时候请务必先:data(NULL)设为NULL值,以免野指针,破坏数据。(每个构造最好都要,保险)
如果存在数组,那么我们也bzero(数组,sizeof(数组)),初始化为0
出错:在写string类的时候,居然报了段错误:因为我拷贝构造函数忘记了初始化:data(NULL)了,这样就是野指针,估计指向不能释放的空间了,所以报错。察!记住
12. 存在指针成员的类,如果没有重载=函数,那么使用了=,则可能会2次释放该指针空间,所以段错误。
13 *this不是局部变量,所以可以返回。
14 realloc(str,25)//重新在原空间基础上调整空间大小,之后原有的空间数据依旧存在着。
15 结构体中,即使是数组,如果能平凑的话,也是会去拼的。
16 extern "C"{} 指明了使用C的编译方式来编译该段代码。
17 经常出错: 总是不经意间去改变常量地址的空间,要知道:常量是不可变的。 char* p="123";realloc(p,150);会报错,因为你想改变常量空间。
18. 引用类型的返回必须指向的是全局空间。因为引用相当于指针。*this不是局部的。是他自己。
19. C++前规则:普通的值传参使用const & ,指针的传参使用& .都已经成为了C++的前规则了。
花了一个上午,终于复习完了C++了,下午搞C.哈哈。爽!!!!!!!!!!!