您现在的位置是:主页 > news > 网站制作和网页制作区别/网络营销策略内容

网站制作和网页制作区别/网络营销策略内容

admin2025/5/17 22:59:52news

简介网站制作和网页制作区别,网络营销策略内容,品牌设计的意义,网站制作收费一.类模板与友元 当友元函数在外部定义时&#xff0c;友元函数以及所属的类必须声明。 友元函数放在类模板的内部时&#xff0c;友元函数可以直接调用&#xff0c;无需加类限定符。 #include<iostream> #include<string> #include<vector> using namespace s…

网站制作和网页制作区别,网络营销策略内容,品牌设计的意义,网站制作收费一.类模板与友元 当友元函数在外部定义时&#xff0c;友元函数以及所属的类必须声明。 友元函数放在类模板的内部时&#xff0c;友元函数可以直接调用&#xff0c;无需加类限定符。 #include<iostream> #include<string> #include<vector> using namespace s…

一.类模板与友元

当友元函数在外部定义时,友元函数以及所属的类必须声明。 友元函数放在类模板的内部时,友元函数可以直接调用,无需加类限定符。

#include<iostream>
#include<string>
#include<vector>
using namespace std;template<class T>
class A
{public:friend void print(A<T> *aa)//声明友元函数{cout << (*aa).x << ' ' << (*aa).y << endl;}friend void print(A<T> &aa)//声明友元函数{cout << aa.x << ' ' << aa.y << endl;}friend A *operator+(const A<T> &a, const A<T> &b){A *p = new A(a.x + b.y,a.y + b.y);return p;	     }A(T t1, T t2) :x(t1), y(t2){}private:T x;T y;
};void main2()
{A<string> a1("hello", "world");print(a1);A<int> aa(10, 20);A<int> bb(1, 2);A<int> *pA = aa + bb;print(pA);cin.get();
}
void main1()
{vector<int> v1;vector<vector<int>>	v2;using V2 = vector<vector<int>>;//等价于typedefV2 v22;
}

二.类模板与友元函数类

#include<iostream>
using namespace std;
// 类模板友元函数在外部定义需要加上声明
template<class T> class myclass;
template<class T> void printA(myclass<T> my);template<class T>
class myclass
{
public:myclass(T t) :x(t){}friend void print(myclass<T> my)//友元函数,提供外部接口,访问私有数据{cout << my.x << endl;}friend void printA<T>(myclass<T> my);//友元函数在外不部定义,需要在头部进行声明,声明类和友元函数。//否则会编译通过但是不可以执行。
private:T x; //	通过模板友元类进行访问//int y; 通过普通友元函数进行访问
};
template<class T>
void printA(myclass<T> my)//注意这里没有加上类限定
{cout << my.x << endl;
}
void mainA()
{myclass<int> my1(10);myclass<double> my2(10.9);print(my1);print(my2);printA(my1);cin.get();
}

三.类模板中友元函数是类模板

类模板作为类模板的友元函数,类模板与友元类模板必须在定义前加上声明。

#include<iostream>
using namespace std;
template<class T> class myclass;
template<class T> class runclass;//友元类必须声明
template<class T>
class myclass
{
public:myclass(T t) :x(t){}friend class runclass<T>;//声明友元类
private:T x; //	通过模板友元类进行访问//int y; 通过普通友元函数进行访问
};
template<class T>
class runclass
{	
public:void print(const myclass<T> &my){cout << my.x << endl;}
};
void main()
{myclass<double> mm(10.8);runclass<double> run1;run1.print(mm);cin.get();
}