C++ 一般模板友元关系
//一般模板友元关系
#include "stdafx.h"
#include <iostream>
using namespace std; template<class T>
class MyClass
{
public:
MyClass();
~MyClass();
template<class T>friend class MyClass1;
template<class T>friend int Get(const int&);
private:
const static int a = 10;
}; template<>
MyClass<int>::MyClass()
{
} template<>
MyClass<int>::~MyClass()
{
} template<class T>
class MyClass1
{
public:
MyClass1();
~MyClass1();
int Get();
private: }; template<>
MyClass1<int>::MyClass1()
{
} MyClass1<int>::~MyClass1()
{
} int MyClass1<int>::Get()
{
MyClass<int>(mc);
return mc.a;
} template<class T>
int Get<int>(const int&a)
{
MyClass<int>(mc);
return mc.a + a;
} int _tmain(int argc, _TCHAR* argv[])
{
int n = Get<int>(123);
cout<<n<<endl; MyClass1 <int>(mc1);
n = mc1.Get();
cout<<n<<endl;
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
C++ 一般模板友元关系的更多相关文章
- 浅谈C++中的友元关系
在封装中C++类数据成员大多情况是private属性:但是如果接口采用多参数实现肯定影响程序效率:然而这时候如果外界需要频繁访问这些私有成员,就不得不需要一个既安全又理想的"后门" ...
- C++:模板友元
模板友元函数在类内声明类外定义时都必须加模板前缀,另外模板要写在一个文件内 // generates undefined error for the operator<< function ...
- C++_友元3-其他友元关系
友元和类的关系还可以更复杂. 举个例子,假设出现了交互式遥控器,交互式遥控器能够让您回答电视节目中的问题,如果回答错误,电视将在控制器上产生嗡嗡声. 这个例子的问题,可以使用新的友元关系来解决.我把它 ...
- cc30a_demo-CppPrimer_友元与继承-txwtech友元关系不能继承-要明确授予友元
//友元可以访问类的private与protected成员//友元关系不能继承-要明确授予友元 #include <iostream>//CppPrimer_友元与继承-txwtech-- ...
- 模板类之间的友元关系实现Blob和BlobPtr
16.12编写你自己版本的Blob和BlobPtr模板,包含书中未定义的多个const成员. Blob.h(注意,成员函数的声明和定义要放在一个头文件中) /*记住,模板的头文件中通常既包括声明也包括 ...
- C++11模板友元语法
第 1 类: 普通类A的 普通类B 友元(一对一友好关系): 无需前置声明class B,当class B第一次出现在friend声明中时,该名字被隐式地认为可见. class A { friend ...
- C++运算符重载 模板友元 new delete ++ = +=
今天的重载是基于C++ 类模板的,如果需要非类模板的重载的朋友可以把类模板拿掉,同样可以参考,谢谢. 一.类模板中的友元重载 本人喜好类声明与类成员实现分开写的代码风格,如若您喜欢将类成员函数的实现写 ...
- 模板类的约束模板友元函数:template friend functions
本来这篇博客是不打算写的,内容不是很难,对于我自己来讲,更多的是为了突出细节. 所谓template friend functions,就是使友元函数本身成为模板.基本步骤:1,在类定义的前面声明每个 ...
- C++中模板类使用友元模板函数
在类模板中可以出现三种友元声明:(1)普通非模板类或函数的友元声明,将友元关系授予明确指定的类或函数.(2)类模板或函数模板的友元声明,授予对友元所有实例的访问权.(3)只授予对类模板或函数模板的特定 ...
随机推荐
- MySQL学习之SQL基础(一)DML
DML(data Manipulation language) INSERT DELETE UPDATE SELECT INSERT mysql> desc emp; +----------+- ...
- 如何在PHP中进行会话处理?
在PHP中会话处理是一个很重要的概念,它允许用户信息在网站或应用程序的所有页面上保持不变.下面本篇文章就来带大家学习一下PHP中会话处理的基础知识,希望对大家有所帮助. PHP中什么是会话(sessi ...
- DateTimePicker控件在WinXP下的BUG
如图,通过图示的按钮改变datetimepicker的值 ,弹出MessageBox, datetimePicker重新获得焦点后,自动重复点击按钮. 解决办法: new Thread(() => ...
- Windows按键消息—虚拟键码(转)
源地址:http://c.biancheng.net/cpp/html/1253.html 虚拟键码保存在WM_KEYDOWN.WM_KEYUP.WM_SYSKEYDOWN和WM_SYSKEYUP消息 ...
- python 输出99乘法表
for i in range(1,10): for j in range(1,i+1): print("%s*%s=%2s"%(i,j,i*j),end=" " ...
- 洛谷[Luogu] 普及村总结
总结 简单的模拟 交叉模拟 排序 排序EX
- 096-PHP循环使用next取数组元素
<?php function return_item($arr,$num=0){ //定义函数 for($i=0;$i<$num;$i++){ //循环向前移动数组指针 next($arr ...
- 088-PHP数组运用 - 通过循环函数过滤部分数组
<?php function myfunc(&$arr){ //自定义一个过滤函数 $j=count($arr); for($i=0;$i<$j;$i++){ if($arr[$i ...
- vue 循环和v-if 不能混合使用
<div class="item page-item" v-for="(item,i) in pageNum" @click="setCurre ...
- css实现下箭头
css实现下箭头 .top { width:; height:; border-left: 10px solid transparent; border-right: 10px solid trans ...