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);              //编译可以通过

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

  • 相关阅读:
    批处理操作
    注册表操作
    js 表格操作(兼容模式
    asp解码.net传参
    windows+nginx 查看并发链接数
    windows+nginx负载测试
    开发cocos2dx真机插件遇到问题,以及心得
    react路由
    Redux实现原理解析及应用
    test
  • 原文地址:https://www.cnblogs.com/guoliushui/p/9485469.html
Copyright © 2011-2022 走看看