------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一.c++基础
1.面向对象的三大特征:封装,继承和多态。
2.默认的构造函数:(1)没有参数的构造函数(2)有参数,但参数有默认值
3.#include “文件名”:先在当前目录下寻找,找不到然后在系统目录下寻找
#include<文件名>:只在系统目录下寻找
4.编译器为我们提供的默认构造函数:只为对象分配存储空间
5.如没有给类中的成员变量赋值,则默认值为0
6.当成员变量和参数名称相同时,可用初始化列表进行初始化,而无须改变他们的名称
7.当成员变量中有const变量时,必须使用初始化列表对改变亮进行初始化。
初始化列表与普通的在花括号中赋值的区别:
1)使用初始化列表是进行的初始化,不是赋值
2)在花括号中是赋值,不是初始化
8.重载下标运算符,必须重载为成员函数 有两种版本:1)const版本:const int& operator[](int index) const 其中返回值中得const是为了保证返回以后不能作为左值对他进行赋值;最后面的const说明这是一个const成员函数,const对象是可以调用这个版本的。 2)非const版本:in& operator[](int index) 9.类中有数组作为数据成员,当这个类的对象赋值给另一个对象时,类中的数组进行的时深拷贝。而在c语言中是不允许数组之间进行赋值的。8.const的三种用法 (1)const int& func(int a);这种主要用于对象如一个Thing对象:const Thing& func(Thing a);返回的是一个Thing类的一个const对象的引用,这个对象只能调用const成员函数,不能调用非const成员函数。如果去掉const的话,则返回的对象既可以调用const成员函数,也可以调用非const成员函数。 (2)int func(const int & i);这种写法说明在这个函数中是不能改变i的值的。 (3)int func(int a)const;只用这个函数作为类的成员函数时才能这样在最后加const。这说明这个函数是一个const成员函数。在这个函数中是不能改变类中成员变量的值。 9.运算符的优先级顺序 最高的是:(),[],.->这四个 次之的是单目运算符 第三的是双目运算符:依次是算术运算符,关系运算符,逻辑运算符,赋值运算符 最低的是:, 10.内存分配区域问题 (1)栈区,所有的局部变量的空间都分配在栈上,由编译器自动分配释放 (2)堆区,一般有程序员分配释放(malloc/free,new/delete),其中由malloc/free分配释放的也可以叫做自由存储区 (3)全局区(静态存储区)全局变量和静态变量存放在这个区域,程序结束后由系统释放 (4)文字常量区,常量存放在这个区域,如常量字符串,程序结束后由系统自动释放 (5)程序代码区,存放函数体的二级制代码
|
2.this指针
没一个类的成员函数中都有一个隐藏的参数,就是指向自己的指针。需要注意的时,this指针只是存在于成员函数中,只能在成员函数中访问,在其他地方是无法访问的。
3.析构函数
析构函数不是用来释放对象的。如果对象存放在栈上,则在出了作用域以后有系统自动释放,如果对象在堆上,则由我们自己用delete释放。delete会调用对象的析构函数。对象在释放之前会自动的调用析构函数,完成一些善后的工作。
4.运算符重载的概念:让同一运算符来做不同的运算时称之为运算符重载
要求:1)只能重载已经存在的运算符,不能创建新的运算符 2)重载以后的运算符的操作数个数应保持不变 3)重载的运算符中至少有一个操作数是自定义类型
5.不能重载的运算符有1) ::2).3).*4)?:5)sizeof
6.有三个运算符不用重载就能适用于所有的对象:1)= 2)& 3)*
其中=在不重载的情况下是浅拷贝(两个指针指向的是相同的方向)
7.重载输出运算符时,必须重载为友元函数
如:ostream& operator<<(ostream&out,const complex& x);
其中返回值为ostream&,不能在前面加const;必须是引用返回,因为ostream对象是不能复制的。
参数ostream& out,不能加const因为在函数中改变了out对象中得数据成员。
8.重载下标运算符,必须重载为成员函数
有两种版本:1)const版本:const int& operator[](int index) const 其中返回值中得const是为了保证返回以后不能作为左值对他进行赋值;最后面的const说明这是一个const成员函数,const对象是可以调用这个版本的。
2)非const版本:in& operator[](int index)
9.类中有数组作为数据成员,当这个类的对象赋值给另一个对象时,类中的数组进行的时深拷贝。而在c语言中是不允许数组之间进行赋值的。
三.运算符的重载
1.引用在声明是必须进行初始化2.this指针
没一个类的成员函数中都有一个隐藏的参数,就是指向自己的指针。需要注意的时,this指针只是存在于成员函数中,只能在成员函数中访问,在其他地方是无法访问的。
3.析构函数
析构函数不是用来释放对象的。如果对象存放在栈上,则在出了作用域以后有系统自动释放,如果对象在堆上,则由我们自己用delete释放。delete会调用对象的析构函数。对象在释放之前会自动的调用析构函数,完成一些善后的工作。
4.运算符重载的概念:让同一运算符来做不同的运算时称之为运算符重载
要求:1)只能重载已经存在的运算符,不能创建新的运算符 2)重载以后的运算符的操作数个数应保持不变 3)重载的运算符中至少有一个操作数是自定义类型
5.不能重载的运算符有1) ::2).3).*4)?:5)sizeof
6.有三个运算符不用重载就能适用于所有的对象:1)= 2)& 3)*
其中=在不重载的情况下是浅拷贝(两个指针指向的是相同的方向)
7.重载输出运算符时,必须重载为友元函数
如:ostream& operator<<(ostream&out,const complex& x);
其中返回值为ostream&,不能在前面加const;必须是引用返回,因为ostream对象是不能复制的。
参数ostream& out,不能加const因为在函数中改变了out对象中得数据成员。
8.重载下标运算符,必须重载为成员函数
有两种版本:1)const版本:const int& operator[](int index) const 其中返回值中得const是为了保证返回以后不能作为左值对他进行赋值;最后面的const说明这是一个const成员函数,const对象是可以调用这个版本的。
2)非const版本:in& operator[](int index)
9.类中有数组作为数据成员,当这个类的对象赋值给另一个对象时,类中的数组进行的时深拷贝。而在c语言中是不允许数组之间进行赋值的。
三.运算符的重载
1.引用在声明是必须进行初始化2.this指针
没一个类的成员函数中都有一个隐藏的参数,就是指向自己的指针。需要注意的时,this指针只是存在于成员函数中,只能在成员函数中访问,在其他地方是无法访问的。
3.析构函数
析构函数不是用来释放对象的。如果对象存放在栈上,则在出了作用域以后有系统自动释放,如果对象在堆上,则由我们自己用delete释放。delete会调用对象的析构函数。对象在释放之前会自动的调用析构函数,完成一些善后的工作。
4.运算符重载的概念:让同一运算符来做不同的运算时称之为运算符重载
要求:1)只能重载已经存在的运算符,不能创建新的运算符 2)重载以后的运算符的操作数个数应保持不变 3)重载的运算符中至少有一个操作数是自定义类型
5.不能重载的运算符有1) ::2).3).*4)?:5)sizeof
6.有三个运算符不用重载就能适用于所有的对象:1)= 2)& 3)*
其中=在不重载的情况下是浅拷贝(两个指针指向的是相同的方向)
7.重载输出运算符时,必须重载为友元函数
如:ostream& operator<<(ostream&out,const complex& x);
其中返回值为ostream&,不能在前面加const;必须是引用返回,因为ostream对象是不能复制的。
参数ostream& out,不能加const因为在函数中改变了out对象中得数据成员。
8.重载下标运算符,必须重载为成员函数
有两种版本:1)const版本:const int& operator[](int index) const 其中返回值中得const是为了保证返回以后不能作为左值对他进行赋值;最后面的const说明这是一个const成员函数,const对象是可以调用这个版本的。
2)非const版本:in& operator[](int index)
9.类中有数组作为数据成员,当这个类的对象赋值给另一个对象时,类中的数组进行的时深拷贝。而在c语言中是不允许数组之间进行赋值的。
三.运算符的重载