成员函数与非成员函数的使用与区分

本文介绍了C++中成员函数与非成员函数的区别,包括它们的定义位置、访问权限和使用场景。成员函数可以是内联的,非成员函数若需访问私有成员需声明为友元。内联函数用于提高小函数执行效率,但可能导致代码膨胀。同时提到了友元函数的作用。

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值