c++程序设计笔记(6)
来源:互联网 发布:淘宝手工礼物的店铺 编辑:程序博客网 时间:2024/05/16 08:33
运算符重载:
实质是函数重载,形式返回值类型 operator运算符(形参表){}
程序编译时:
1、把含运算符的表达式转换为运算符函数的调用
2、运算符的操作数转换为运算符函数的参数
3、运算符被多次重载时,根据实参的类型决定调用运算符函数
4、运算符可以被重载为普通函数,也可以被重载为成员函数。
重载为普通函数,参数个数为运算目数:
class Complex{
public:
int real;
int image;
public:
Complex(){}
Complex(int r,int i){
real = r;
image = i;
}
};
Complex operator+(const Complex& com1,const Complex & com2){
return (Complex(com1.real+com2.real,com1.image+com2.image));
}
int main() {
Complex a(1,2),b(3,4),c;
c = a + b;
cout<<c.real<<"\t"<<c.image<<endl;
return 0;
}
重载为成员函数,参数个数为运算目数减1:调用的是对象.+()
class Complex{
public:
int real;
int image;
public:
Complex(){}
Complex(int r,int i){
real = r;
image = i;
}
Complex operator+(const Complex & com2){
return Complex(this->real+com2.real,this->image+com2.image);
}
};
int main() {
Complex a(1,2),b(3,4),c;
c = a + b;
cout<<c.real<<"\t"<<c.image<<endl;
return 0;
}
赋值运算符只能重载为成员函数:
class String{
char* str;
public:
String():str(NULL){}
char * operator=(const char * b){
if(str){
delete []str;
}
if (b){
str = new char[strlen(b)+1];
strcpy(str,b);
}
return str;
}
char * get_str(){
return str;
}
~String(){
if(!str){
delete [] str;
}
}
};
int main() {
String s;
s = "happy";
cout<<s.get_str()<<endl;
return 0;
}
}
深拷贝和浅拷贝:
浅拷贝:一个对象中指针变量的内容复制到另一个对象中指针成员对象所指向的内容。
带来的问题:会调用两次析构函数,第二次调用的时候变量已经被释放了,再去delete会导致错误
深拷贝:一个对象中指针变量所指向的内容复制到另一个对象中指针成员对象所指向的内容。
拷贝的时候会新创建一片空间,对其赋值。
0 0
- 《C程序设计(第四版)》学习笔记
- C程序设计学习笔记(完结)
- C程序设计学习笔记(完结)
- C程序设计学习笔记(完结)
- C程序设计学习笔记(完结)
- 《Objective-C程序设计》笔记
- Objective-C 2.0 学习笔记一(Objective-C 程序设计)
- c++程序设计笔记(6)
- C程序设计(谭浩强)--学习笔记
- 《windows程序设计(C语言版)》笔记
- 《objective-c程序设计》学习笔记
- 学习笔记(6):C程序设计(第四版)谭浩强著_第九章
- C程序设计笔记6-8章 数组/函数/指针
- C语言学习笔记(五)--顺序程序设计
- C语言学习笔记(六)--分支程序设计
- C语言学习笔记(七)--循环程序设计
- c语言与程序设计笔记:指针篇 (1)
- Object-C 学习笔记(IOS程序设计课程)01
- php const和define的区别
- Python学习:定制类(实现一个类表现的很像一个list)
- MySQL数据库传参(JAVA)
- Android输入的身份证号大小写通用
- JDK的环境变量设置
- c++程序设计笔记(6)
- IPMI on CentOS/RHEL
- TextView设置DrawableLeft
- 1503: [NOI2004]郁闷的出纳员【splay】
- MyCat - 源代码篇(8)
- 数据结构笔记——
- Nginx使用ssl模块配置https
- 在scrollview里放gridview冲突问题心得
- 数据挖掘-用户画像