zoukankan      html  css  js  c++  java
  • 关于友元函数在类内定义的问题--笔记

    我们平常使用友元函数都仅是在类内部声明,在类外定义,今天看到了一个在类内定义的例子,就产生了好奇,把自己的总结记录下来;

    先看例子

     1 class T 
     2 {
     3 public:
     4     T();
     5     ~T();
     6 
     7     //不引入类对象
     8     friend void show_hello_no_param()
     9     {
    10         std::cout << "show_hello_no_param() of T : Hello world!
    ";
    11     }
    12     
    13     //引入类对象
    14     friend void show_hello(T t)
    15     {
    16         std::cout << "show_hello() of T : Hello world!
    ";
    17     }
    18 
    19 };
    20 
    21 int main(int argc, char* argv[])
    22 {
    23     T t;
    24 
    25     show_hello_no_param();      //编译不通过
    26     
    27     show_hello(t);              //编译可以通过
    28 
    29     getchar();
    30 
    31     return 0;
    32 }

    根据上面的例子感觉像是类内定义的友元函数在类对象的作用域内可以编译通过;

    同时也试了下传指针也能编译通过,T* t=NULL或 t = new T()结果一样都能通过;

    1     T* t=NULL;//new T();
    2 
    3     //show_hello_no_param();      //编译不通过
    4     
    5     show_hello(t);              //编译可以通过

    这里面到底涉及什么原理还没搞清楚,希望清楚的高手能赐教一下。

  • 相关阅读:
    flask和tornado的区别
    tornado1
    人脸识别
    ocr:img转成pdf,pdf转成pdf
    flask2
    《个人-GIT使用方法》
    课后作业-阅读任务-阅读笔记
    课后作业-阅读任务-阅读提问
    结对-四则运算生成器-设计文档
    团队-手机备忘录-开发环境搭建过程
  • 原文地址:https://www.cnblogs.com/guoliushui/p/9485469.html
Copyright © 2011-2022 走看看