类
1、2、3、4原文链接:https://blog.csdn.net/fjhugjkdsd/article/details/105281651
1.什么是类的6个默认成员函数?
如果一个类中什么成员都没有,简称为空类。任何一个类在我们不写成员函数的情况下,都会自动生成下面6个默认成员函数。
- 构造函数;
- 析构函数;
- 拷贝构造;
- 赋值重载;
- 普通对象取地址;
- const对象取地址。
2.拷贝构造函数的参数
拷贝构造函数的参数只有一个且必须使用引用传参,使用传值方式会引发无穷递归调用。
3.const修饰类的成员函数
const修饰的类成员函数称之为const成员函数。const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。
观察下面代码,思考下面问题。
class Date
{
public:
void Display ()
{
cout << "Display ()" << endl;
cout << "year:" << _year << endl;
cout << "month:" << _month << endl;
cout << "day:" << _day << endl << endl ;
}
void Display () const
{
cout << "Display () const" << endl;
cout << "year:" << _year << endl;
cout << "month:" << _month << endl;
cout << "day:" << _day << endl << endl;
}
private:
int _year ; // 年
int _month ; // 月
int _day ; // 日
};
void Test ()
{
Date d1 ;
d1.Display ();
const Date d2;
d2.Display ();
}
-
const对象可以调用非const成员函数吗?
答:不可以,const对象为只读,不可以将对象变为可读可写。权限不可以放大。 -
非const对象可以调用const成员函数吗?
答:可以,非const为可读可写,可以将对象变为只读。权限可以缩小。 -
const成员函数内可以调用其它的非const成员函数吗?
答:不可以,原因同上。 -
非const成员函数内可以调用其它的const成员函数吗?
答:可以,原因同上。
4.取地址及const取地址操作符重载
这两个默认成员函数一般不重新定义 ,编译器默认会自动生成。
class Date
{
public:
Date* operator&()
{
return this ;
}
const Date* operator&()const
{
return this ;
}
private:
int _year ; // 年
int _month ; // 月
int _day ; // 日
};
标签:调用,const,函数,成员,知识,C++,注意,Date,可以
From: https://www.cnblogs.com/hbwang1115/p/16769165.html