一、成员变量和成员函数分开存储
c++中类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象上。
二、this指针
c++提供的特殊的对象指针。
用途:
- 解决名称冲突
- 返回对象本身用 *this
this指针指向被调用的成员函数所属的对象。
三、空指针访问成员函数
防止创建的对象传入的指针为空,通常加以下代码。
if (this == NULL)
{
return;
}
四、常函数和常对象
常函数:
- 成员函数加 const 后为常函数
- 常函数内不可以修饰成员成员属性
- 成员属性声明时加关键字 mutable后,在常函数中可修改
常对象:
- 声明对象前加 const 称该对象为常对象
- 常对象只能调用常函数
例题:函数嵌套类。输入两个整数求平方和。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
int fun2(int m)
{
return m * m;
}
int fun1(int x, int y)
{
return fun2(x) + fun2(y);
}
int main()
{
int a = 0;
int b = 0;
cout << "请输入两个整数:" << endl;
cin >> a >> b;
cout << "a和b的平方和为:" << fun1(a,b)<<endl;
return 0;
}
运行结果:
例题:函数递归。求n的阶乘。
n!= 1(n=0)或 n*(n-)(n>0)
#define _CRT_SECURE_NO_WARNINGS
//函数递归求阶乘
//n!= 1(n=0)或n(n-1)!(n>0)
#include<iostream>
using namespace std;
unsigned fac(int n)
{
unsigned f;
if (n == 0)
{
f = 1;
}
else
{
f = fac(n - 1) * n;
}
return f;
}
int main()
{
unsigned n = 0;
cout << "请输入n的值:" << endl;
cin >> n;
unsigned y = fac(n);
cout << n << "!=" << y << endl;
return 0;
}
运行结果: