class-c++重载运算符的问题 ...

问题描述

c++重载运算符的问题 ...

今天学习了 重载运算符,

有一个重载[]的疑问
class A
{
public:
A(int n)
{
m_num = n;
}
int& getNum()
{
return m_num;
}
private:
int m_num;
};

int &operator
{
cout << "index:" << index << endl;
return a.getNum();
}

为什么重载运算符[]函数无法写成全局的 但++ -- 或者其他运算符都可以写在全局呢

解决方案

https://wuyuans.com/2012/09/cpp-operator-overload/
以下一些双目运算符不能重载为类的友元函数:=、()、[]、->。

解决方案二:

都可以写在全局的,只是要写在全局就要先负值再在类中引用。

解决方案三:

一般来说,单目运算符我们提倡定义为成员函数。[]和=是一个道理:即编译器发现当类中没有定义这些运算符的重载成员函数时,就会自己加入默认的运算符重载成员函数,容易造成错误。

解决方案四:

//VPoint.h文件
#pragma once

class VPoint
{
public:
VPoint(void);
VPoint(int x,int y,int z);

//运算符重载 

//重载 + -
friend VPoint operator + (const VPoint& pt1, const VPoint& pt2);
friend VPoint oper......<br/><strong>答案就在这里:</strong><a target='_blank' rel='nofollow' href='http://blog.csdn.net/misakahina/article/details/39056309'>C++中的运算符重载问题</a><br/>
时间: 2024-12-28 14:06:23

class-c++重载运算符的问题 ...的相关文章

link能不能重载==运算符?如果我想让字符串忽略大小写,怎么写?

问题描述 link能不能重载==运算符?如果我想让字符串忽略大小写,怎么写? link能不能重载==运算符?如果我想让字符串忽略大小写,怎么写? 解决方案 (1)不能,你需要重写Equals方法 (2)这个简单,比较的双方都转换成大写或者小写中的一种就可以了.toupper tolower

matrix-C++类中包含数组,如何重载运算符,第一次进入,还没有c币,求大神帮忙了,感激不尽

问题描述 C++类中包含数组,如何重载运算符,第一次进入,还没有c币,求大神帮忙了,感激不尽 这是头文件 #include #ifndef MATRIX_H_ #define MATRIX_H_ class matrix { private: double a[20][20]; int m,n; public: matrix(); matrix(const matrix&a); ~matrix(); matrix operator=(const matrix&a); friend void

C++重载运算符“&amp;amp;lt;&amp;amp;lt;”和“&amp;amp;gt;&amp;amp;gt;”出现错误

问题描述 C++重载运算符"<<"和">>"出现错误 主函数中用<<>时出现错误no operator defined which takes a right-hand operand of type 'class vsctor' (or there is no acceptable conversion) #includeusing namespace std;class vsctor{public: vsctor(int

求大神解答一下c++的题,重载运算符+,-,*,求矩阵的运算,做了好久没做出来

问题描述 求大神解答一下c++的题,重载运算符+,-,*,求矩阵的运算,做了好久没做出来 #include<iostream.h> #include<iomanip.h> class operation {public: static void rank(); //输入阶数 void array(); //输入矩阵 void display(); friend operation operator +(operation &,operation &); friend

【C/C++学院】0820-Nullptr/const对象/类指针引用以及mallocfree与newde/类重载运算符/QT加法重载/类的重载赋值运算/自增在前在后差别/赋值重载深浅拷贝/重载下标

Nullptr #include<iostream> void go(int num) { std::cout << "gonum" << std::endl; } void go(void *p) { std::cout << "gop" << std::endl; } void main() { //void *p = nullptr; void *p = NULL;//C++是强类型,严格的类型检查

C++重载运算符“=”相关问题

问题描述 C++重载运算符"="相关问题 1C 删除部分删除的"="相关加上应该如何做,才能正确 解决方案 C++重载运算符相关C++重载运算符问题C++中的运算符重载问题 解决方案二: http://blog.csdn.net/supersonico/article/details/39056309

运算符重载-C++为什么要重载运算符?

问题描述 C++为什么要重载运算符? 我是java程序员,最近在学习C++.看到运算符重载这块的时候感到很不解,说是可以解决多态的问题,自定义运算.呐为什么不直接用多态函数实现这些功能,何必非得使用这些运算符来执行这些操作? 解决方案 有用到的地方还是重载方便,比如对象对与象相加"+" 原运算符不能满足就自实现方式,面向对象调用起来是最方便的 //obj3 = obj1 + obj2; 解决方案二: 有时候用操作符更加直观啊,也不用记函数名什么的.Java的目标是简化C++的复杂功能,

typedef struct-c++重载运算符 +=报错

问题描述 c++重载运算符 +=报错 typedef struct UserInfo{ ULONGLONG m_ullReqNum; ULONGLONG m_ullResNum; ULONGLONG m_ullEmptyResNum; }USERINFO_S; typedef struct UserQueryReport{ std::map<std::string,USERINFO_S>m_strUserInfo; void operator +=(const UserQueryReport&

c++-重载运算符C++后置++在屏幕上的显示规则

问题描述 重载运算符C++后置++在屏幕上的显示规则 c++运算符重载后置++在屏幕上如何显示?结果为什么该加一,却没有显示出来,还是原数.在写一段前置++代码,屏幕上则显示原数字多加了2. 有代码如下: c=a++; cout<<c=a++,c=",c.display; c=++a; cout<<"c=++a,c=",c.display; ............ a=(100,200),b=(10,20) 则显示结果如下: c=a++,c=(100