友元函数

#include <stdio.h>

struct node_s {
private:
    int x;
    int y;
public:
    node_s(int x, int y)
    {
        this->x = x;
        this->y = y;
    }
    friend void print(node_s &p);
};

void print(node_s &p)    
{
    printf("p.x: %d, p.y: %d\n", p.x, p.y);
}

int main(int argc, char* argv[])
{
    node_s node(1, 2);
    print(node);

getchar();
    return 0;
}

时间: 2024-10-12 13:08:25

友元函数的相关文章

友元函数&lt;&lt;的模板化

1.构造函数的一种使用 int main(void){     //Test t1 = 10;// 在构造函数中寻找只有一个参数的          //手动的调用构造函数;     Test t2 = Test(1, 2);  //直接调用构造函数--->匿名对象;     //直接调用Test的有参构造函数,初始化t2对象;  只会调用一次构造函数(直接把匿名对象转成t2);      } 2.构造与赋值语句 Test g(){          //返回为对象,我就给你返回一个新的对象(匿

【C/C++学院】0825-类模板/final_override/类模板与普通类的派生类模板虚函数抽象模板类/类模板友元/位运算算法以及类声明/Rtti 实时类型检测/高级new创建/类以及函数包装器

类模板 类模板多个类型默认类型简单数组模板 #pragma once template <class T=int>//类模板可以有一个默认的值 class myArray { public: myArray(); ~myArray(); }; #include "myArray.h" template <class T=int>//每一个函数都需要加上一个默认的值 myArray<T>::myArray() //类模板成员函数在外部,需要加载类型初始

模板类的友元函数

非模板友元函数 模板类的非模板友元函数是说该模板类的友元函数只是一个普通函数,并且该函数是非模板函数或该函数不视为模板函数.这里包含了两种情况,下面分别就两个例子进行说明. • 函数是非模板函数 这一类友元函数特点是不带有参数列表,例如:friend void Fn().这类友元函数通常可以用于全局对象的访问. #include <iostream> using namespace std; template <class T> class MyNumber { private:

类模板,多种类型的类模板,自定义类模板,类模板的默认类型,数组的模板实现,友元和类模板,友元函数,类模板与静态变量,类模板与普通类之间互相继承,类模板作为模板参数,类嵌套,类模板嵌套,类包装器

 1.第一个最简单的类模板案例 #include "mainwindow.h" #include <QApplication> #include <QPushButton> #include <QLabel> template<class T> class run { public: T w; void show() { w.show(); } void settext() { w.setText("A"); }

模板类的约束模板友元函数:template friend functions

本来这篇博客是不打算写的,内容不是很难,对于我自己来讲,更多的是为了突出细节. 所谓template friend functions,就是使友元函数本身成为模板.基本步骤:1,在类定义的前面声明每个模板函数.eg:template <typename T> void counts(); template <typename T> void report<>(T &);2,在类声明中再次将模板声明为友元. template <typename TT>

C++ 类模板二(类模版与友元函数)

//类模版与友元函数 #include<iostream> using namespace std; template<typename T> class Complex{ public: Complex(T a,T b); void Print() const//const修饰的是this指针 { cout << this->Real << ":" <<this->Image<< endl; } /*

在c++ 模板类外写 操作符重载函数,并且是模板类的友元函数

看视频教程说不能在c++ 模板类外写 操作符重载函数,并且是模板类的友元函数 我试了试,可以,放出测试代码: #include <iostream> using namespace std; template<typename T> class A { public: A(T a) { this->a = a; } template<typename T> //加上这句就可以了 friend A<T> operator+(A<T> &

关于类模板的友元函数

转载 http://blog.sina.com.cn/s/blog_69dd1a090101fc59.html 问题始于学习数据结构,自己编写一个单链表,其中用到了重载输出运算符<<,我写的大约这样: 1 template <class T> class List{ 2 friend std::ostream& operator << (std::ostream& os,const List<T>& slist); 3 //…… 4

类模板友元函数坑死人不偿命的错误

错误例程: #include<iostream> using namespace std; template<class T> class Student { private: T age; public: Student(T age_) :age(age_){} friend bool operator==(const Student<T>& s1, const Student<T>& s2); }; int main() { Studen

在复数类模板中使用友元函数实现复数相加

程序代码(这段代码在vc6.0中不能编译通过,在VS中能编译通过) <span style="font-size:18px;">#include <iostream> using namespace std; template<class T>//类声明前加模板的声明 class Complex { public: Complex( ) { real=0; imag=0; } Complex(T r,T i) { real=r; imag=i; }