在类模板中定义重载运算符模板函数,易错地方如下

错误(1)

#include <iostream>
using namespace std;
template <typename T>
class a
{
public:

a(T X,T Y)
{
x=X;
y=Y;
}
a operator ++();

void display()
{
cout<<"("<<x<<","<<y<<")"<<endl;
}
private:
T x,y;
};

template <typename T> a a<T>::operator++()
{
x++;
y++;
return *this;
}

int main()
{
a<int>point(534,54);
++point;
point.display();
return 0;
}

如上程序出现错误、~

正确:

(1)

#include <iostream>
using namespace std;
template <typename T>
class a
{
public:

a(T X,T Y)
{
x=X;
y=Y;
}
a operator ++()

{
x++;
y++;
return *this;
}

void display()
{
cout<<"("<<x<<","<<y<<")"<<endl;
}
private:
T x,y;
};

int main()
{
a<int>point(534,54);
++point;
point.display();
return 0;
}

正确

(2)

#include <iostream>
using namespace std;
template <typename T>
class a
{
public:
a(T X,T Y)
{
x=X;
y=Y;
}
a <T> operator ++();
void display();
T x,y;
};

template<typename T> a<T> a<T>::operator++()
{

x++;
y++;
return *this;

}

template<typename T> void a<T>::display()
{
cout<<"("<<x<<","<<y<<")"<<endl;
}
int main()
{
a<int>point(53,54);
++point;
point.display();
return 0;
}

转载于:https://www.cnblogs.com/sw-dream/archive/2012/06/06/2538874.html

类模板 重载运算符 易错相关推荐

  1. 类模板与运算符重载(一个简单的例子)

    类模板与运算符重载(一个简单的例子) 标签(空格分隔): C++ 算法竞赛 下面是一段简单的代码,表示我们建立了一个类模板Vector,可以看做是对STL中vector的简单实现. 为了让这个Vect ...

  2. vs2003 局部友元访问私有不可访问_C++ 类:重载运算符与友元

    18.类中重载运算符与友元 上次节中学习了如何在类中重新定义赋值(=)运算符,实际上在一个自定义类中除了赋值(=)运算符外,类的对象是不可以直接使用运算符的,比如你在main函数中写这样的代码会报错: ...

  3. 自定义类模板 重载遇到的问题

    类内声明 friend ostream& operator<<(ostream& os,const store<T> &item); 类外实现 temp ...

  4. C++ 实现字符串类(重载运算符)

    CNString.h: #include <iostream> #include <cstring>#ifndef CNSTRING_H #define CNSTRING_H ...

  5. iOS开发中 常用枚举和常用的一些运算符(易错总结)

    1.色值的随机值: #define kColorValue arc4random_uniform(256)/255.0 // arc4random_uniform(256)/255.0; 求出0.0~ ...

  6. OpenCV中Mat类的重载运算符operator()的用法

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 定义如下: inline Mat Mat::op ...

  7. 笔记②:牛客校招冲刺集训营---C++工程师(面向对象(友元、运算符重载、继承、多态) -- 内存管理 -- 名称空间、模板(类模板/函数模板) -- STL)

    0618 C++工程师 第5章 高频考点与真题精讲 5.1 指针 & 5.2 函数 5.3 面向对象(和5.4.5.5共三次直播课) 5.3.1 - 5.3.11 5.3.12-14 友元 友 ...

  8. 类的6个默认成员函数:构造函数、析构函数、拷贝构造函数、重载运算符、三/五法则

    文章目录 6个默认成员函数 构造函数 概念 默认构造函数的类型 默认实参 概念 默认实参的使用 默认实参声明 全局变量作为默认实参 某些类不能依赖于编译器合成的默认构造函数 第一个原因 第二个原因 第 ...

  9. DEVC++(1)单文件实现重载运算符的十六进制数类

    本文运用DEVC++软件,通过C++类的定义和重载运算符来实现十六进制数类的运算操作,代码以单文件的方式来构建. 题目描述如下: 设计1~4位的无符号十六进制数据类class HEX. 可以创建如 A ...

最新文章

  1. Nutch URL过滤配置规则
  2. 我国拟开展2016年新型智慧城市评价工作
  3. c#运行shell命令
  4. jquery的trigger和triggerHandler区别
  5. POJ1083 Moving Tables
  6. sql 相加_SQL经典题型
  7. MySQL数据库如何管理与维护_mysql数据库的管理与维护
  8. LeetCode - 7 - Reverse Integer
  9. 异步IO(来自博客园)
  10. SpringBoot - 资源国际化
  11. click和blur冲突的问题
  12. 一个关于C++ Inline关键字的引发的一个错误
  13. JavaScript高级程序设计4.pdf
  14. Sql server2005 char/varchar/text和nchar/nvarchar/ntest的区别
  15. ReentrantLock使用及其原理解析
  16. 题目58 工厂流水线调度(ok)
  17. 顶级域名后缀列表(转)
  18. 童年修复系列-PC Engine/TurboGrafx-16介绍及FPGA实现
  19. 如何使用一个for循环输出九九乘法表
  20. python点阵显示数字_Python实现点阵字体读取与转换的方法

热门文章

  1. JavaScript进阶4-学习笔记
  2. 安装jdk后出现bash: ./java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
  3. C#线程的使用和测试
  4. docker应用,后端服务出现OOM情况排查
  5. 恶意软件盯上了加密货币,两家以色列公司受到攻击
  6. linux ssh 报错failed - POSSIBLE BREAK-IN ATTEMPT
  7. 如何自动检查内存泄漏和句柄耗尽
  8. leetcode 202. Happy Number
  9. mybatis 做 insert操作的时候返回插入的那条数据的id
  10. Python 第一篇:python简介和入门