写了一个小程序,用于重载<<,可是编译错误,却怎么也找不出来哪里错了。麻烦各位高手帮忙看看~谢谢了:
#include <fstream >
#include "iostream"
using namespace std;
class Point
{
private:
int px,py;
public:
Point(int x=0, int y=0) { px=x;py=y;}
friend void operator <<(ostream x,Point &pt); //重载"<<"运算符的函数声明
};
void operator <<(ostream x,Point &pt) //重载"<<"运算符的函数头
{
cout<<pt.px<<pt.py<<endl;
}
void main()
{
Point p1(1,2);
cout<<p1;
}
命名将重载定义为友元函数了,却编译说没有权限访问类的私有变量额
E:\VC++实验\temp console\temp.cpp(15) : error C2248: 'px' : cannot access private member declared in class 'Point'
E:\VC++实验\temp console\temp.cpp(7) : see declaration of 'px'
E:\VC++实验\temp console\temp.cpp(15) : error C2248: 'py' : cannot access private member declared in class 'Point'
E:\VC++实验\temp console\temp.cpp(7) : see declaration of 'py'
C++ <<重载问题!
{ private:int px,py;public:Point(int x=0, int y=0) { px=x;py=y;} friend ostream& operator<<(ostream &x,Point pt); \/\/重载"<<"运算符的函数声明 \/\/把void换成ostream& };ostream& operator <<(ostream &x,Point pt) \/\/重载"<<"运算符的函数头 \/\/...
c++语言<<不能重载,什么原因?
出错原因是编译系统无法识别“++<<”这种运算符,编译器以为这是一个运算符而不是两个。
C++运算符重载,+-*\/的重载,返回值为什么是对象而不是对象的引用?而流操...
原因是:+,-,*等返回不了引用,比如+运算符,可以如下重载(为了简单,假设A 只有int x;int y)A operator+(A a,A b) {A sum; sum.x=a.x+b.x; sum.y=a.y+b.y; return sum; } 分析不能用引用的原因: 函数传入了两个参数a,b,并且+只能传入两个参数(c++不允许自己创...
C++中为什么重载前置++运算符要加个&?
cout<<是经常用的,其实是重载了<<这个操作符。如果不返回引用,cout<<a<<b<<endl; 就不可以一起写了。如果返回自身的引用 cout<<a之后,返回身身的引用,后面可以继续接b了。就是这个意思吧。好多重载操作符,作用其实都是这样的。2、引用是C++引入的新语言特性,是C++常用的一个重要内容之一,...
为什么C++操作符<<重载老是提示:operator <<' is ambiguous
<<和>>的重载必须作为类的友元函数,不能作为成员函数.所有应该在你的mycomplex类中,加上friend ostream& operator<<(ostream &os, mycomplex &second);的声明,然在在.cpp文件中实现该函数就可以了.
C++中小于号重载是什么意思?
对于用户自定义类型,要进行大小比较,必须重载<号,不然两个对象如何比较大小啊,例如一个表示学生的记录,可能包括学生姓名和学号,当你比较两个学生时,到底是依他们学号进行比较呢还是姓名的字典顺序呢?你得说清楚 吧
c++重载问题
重载前增后增是有区别的 后增参数必须有一个int值,任何值都 可以,只要是int就行 目的是区别前增与后增 试想这样你能区分出哪个是前哪个是后 COpertor& COpertor::operator++()COpertor& COpertor::operator++()COpertor COpertor::operator++(int){ cout<<"COpertor::opertor++(int ):"...
c++重载的问题,请高手回答
后者是--号在后面,需要返回减之前的值,但是同时也要对源对象进行减操作,但你如果在减之前就直接返回的话,就没法进行减操作了,所以只好先创建一个跟源对象一样的对象,然后对源对象减,然后返回创建的对象。返回值是对象时有个拷贝的过程,会把内部的对象拷贝一份到外部的无名对象中,不会出错。
C++重载的问题
B 友元运算符,所以不是成员函数 通过.访问的全都不是
求助,关于一道C++函数重载的问题
1、运算符重载不改变操作符原先的优先级、结合性和操作数数目,++是单目操作符,所以1不会成立的。你有这样的问题大概是因为双目操作符比如*,可以有x.operator*(y)这种写法吧? 但是这个不改变*是二目操作符的事实。C++规定:双目操作符重载作为成员函数时只能有一个形参,调用方为左操作数,形参...