1、友元函数:
【1】友元函数的调用,在main函数中调用可以像普通函数一样调用:
【2】友元函数不属于任何类,能访问类中的所有成员
【3】友元函数的形参为类对象的引用
如:friend void showDate(Date &d);
【4】如果一个A类是另一个B类的友元类,则A类的成员函数都是B类的友元函数
2、常量数据成员:
常量成员的初始化只能通过构造函数的成员初始化列表进行,并且需要使用关键字const修饰。
class MyClass
{
int _i;
friend void Increment(MyClass & f);
public:
const int NUM;
// ERROR ********found********
MyClass( int i = 0) :NUM(0) //因为NUM为常成员,所以需要在初始化列表中进行初始化
{
_i = i;
}
int GetValue() const { return _i; }
};
![点击并拖拽以移动 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://img-blog.csdnimg.cn/2022010623213030565.gif)
3、关于运算符的重载
【1】C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;
【2】C++不能重载的运算符只有5个;
【3】重载不能改变运算符的优先级和结合性;
【4】重载不能改变运算符运算对象的个数;
【5】重载运算符的函数不能有默认的参数;
【6】重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个类对象,即不允许参数全部是C++的标准类型。
4、this指针
只有类的非静态成员函数才隐含this指针,其作用域是类内部,当类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不必一定写上this。
5、派生类
【1】派生类应该向基类的构造函数传递参数
6、对象指针
【1】在main函数中定义一个对象指针,并调用,如:
MyClass *obj=new MyClass;
obj->Inc();
7.函数重载:
在C++中只要函数参数的类型不同,或者参数的个数不同,或者两者兼而有之;两个或者两个以上的函数可以使用相同的函数名。在同一作用域内,当两个或者两个以上的函数共用一个函数时,称为函数的重载。
如:void fun (int a,double b = 0.0),则可以表示重载函数声明为
void fun (double a,int B);