常函数--const修饰成员函数
- 成员函数加const后成为常函数。const加在函数的最后
class number
{
void myfun() const;//常函数
};
void number::myfun() const
{
}
- 常函数内部不能修改成员属性,起到保护作用
- 常函数内部不循序调用其他非常函数,避免属性被修改
- 成员属性在声明的时候加关键字mutable后,在常函数依旧可以修改
常对象
- 在定义对象时,加一个const修饰,就表示常对象
const number n1;//n1就是一个常对象
- 常对象内部的所有属性都不能被修改。常对象只能调用常函数
友元--关键字friend
- 全局函数做友元--通常被称为友元函数
- 类做友元--通常被称为友元类
- 类成员函数做友元--通常被称为友元成员函数
运算符重载--关键字operator
- 意义:赋予运算符新的操作,使其能够自定义类型(对象)之间的运算符
- 注意:内置数据类型的运算符不能被重载,内置数据类型(C++基本类型):int、char、float……
- 形式
- 类内运算符重载:在类的内部实现,有对象调用,类似于类的成员方法
- 类外运算符重载:类似于一个全局函数,可以直接调用,不需要以对象来调用
算符运算符重载
- 基本语法(类内运算符):返回值operator运算符号(参数1……);
class number
{
public:
//返回值operator 运算符号(参数1……)
void operator+(int n);
};
void number::operator+(int n)
{
//实现代码
}
int n=9;
number n1;
n1.operator+(n);//n1+n
- 类外运算符:返回值operator运算符号(参数1……);
class number
{
};
void operator+(number n1,int n2)
{
//实现代码
}
number n1;
int n2=12;
operator+(n1,n2);//n1+n2
- 注意:由于单目运算符、双目运算符……所以对参数的个数是有要求的,例如:+的重载类外实现必须要两个参数,类内实现只需要一个(对象本身占一个参数)
封装一个简单的字符串,加入重载运算符的操作
class mystring
{
public:
mystring()
{
size=50;
str_p=NULL;
}
int strlen()
{
}
int strcat()
{
}
private:
char *str_p;
int size;
};
mystring str1;