1、区分方式
- 成员函数与成员变量都是类当中的定义
- 函数、变量 在类中: 成员函数 成员变量
- 函数不在类中: 全局函数
2、局限性
- 全局函数无法访问类中的 私有成员
- 如果确实需要,那么需要将该函数声明为友元函数
- 举例
class Student
{
private:
string name;
int age;
public:
//构造函数必须是public,不然就无法访问了,私有变量也无法复制
Student(string name,int age) : name(name){
this->age = age;
}
friend void show(Student *pa);
};
// 用哪个类 就在哪个类中进行 友元函数声明
void show(Student *pa)
{
cout << pa->name << " " << pa->age << endl;
}
main()
{
Student b("xiaoming",10);
show(&b);
return 0;
}
3、 扩展1
- 成员函数可以在类中声明(declare) 、 定义(defineed)
- 也可以类外定义
- 定义的区别
- 类中定义的函数默认是 inline函数
- 类外定义的不是 ,但是可以前面加上inline
4、扩展2: inline函数
- 函数功能 :相当于是直接使用函数内容,而并不是调用,加快程序执行速度
- 专业解释:在 c/c++ 中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了 inline 修饰符,表示为内联函数
- 内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。
- 如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。
5、 友元函数使用参照博客:友元函数使用
参考:
- http://c.biancheng.net/cpp/biancheng/view/211.html
- http://c.biancheng.net/cpp/biancheng/view/186.html
- https://blog.youkuaiyun.com/duanyipeng/article/details/6860760(为何要把类的构造函数定义为private)
- https://www.runoob.com/w3cnote/cpp-inline-usage.html
本文介绍了C++中成员函数与非成员函数的区别,包括它们的定义位置、访问权限和使用场景。成员函数可以是内联的,非成员函数若需访问私有成员需声明为友元。内联函数用于提高小函数执行效率,但可能导致代码膨胀。同时提到了友元函数的作用。
1635





