|
z****e 发帖数: 2024 | 2 const X& operator+(const X& rhs) const;
看到一个声明如上,
const的mem fun 是不能改mem data吧?
那么这种设计干什么呢?进来的是const,里边的自己人也是const,加法,加谁呀? |
|
p***o 发帖数: 1252 | 3 The correct one should be:
X operator+(const X& rhs) const;
e.g. a=b+c is a=b.opeartor+(c), so neither b nor c will be changed. |
|
d**********o 发帖数: 1321 | 4 hw3 & hw3b 最终结果
贴一个自己 hw3b 的 match 结果让小伙伴们感受一下我们作业需要的结果是什么样子
的。
如果是同专业的小伙伴,最后拷贝到编辑器中仔细看一下,这个网页因为宽度有限,让
并排两列的比较呈现出来的很变形。
=================================================
Output of Building User Code
Explode the tar
c-.l
c-.y
makefile
scanType.h
symtab.h
symtab.c
20131116163236-(me~~)-CS445-F13-A3B.tar: POSIX tar archive (GNU)
Tests: directory
c-.l: lex description text
c-.y: lex description text
... 阅读全帖 |
|
d**********o 发帖数: 1321 | 5 hw3b deadline前版本
这里我也先公开承认一下自己早前犯过的错误,在这个楼的第 14 页、第 265 楼,我
有贴出自己的hw3b,但现在我必须向亲爱的读者一一您公开道歉。因为当时因为着急,
我没能找到hw3b deadline前的版本,就把这次作业后来的最终版本(也就是那个楼贴
出来的,只剩下ReturnK、CompoundK两条小尾巴的版本,那个版本被我改动了时间戳我
现在已经把它改回来了。相比于急于求成绩,我更希望自己作一个诚实的人,希望大家
能原谅)给贴出来了。因为我们作业deadline之后也还都是可以接着交的,所以任何作
业,老师都是可以根据后来的版本,追终到这个学生的最后进展的,这个最新进展老师
到底给不给分、就要看老师如何下决定了。
deadline前的版本,被我附在下面了。
当然,把自己的这个版本更新后,我愿为这个楼(这一次出来写的所有)属于自己的每
个贴子负责,所有写出来的,都是真实发生过的事。
=================================================
Output of Building User Code
Ex... 阅读全帖 |
|
d**********o 发帖数: 1321 | 6 hw3 & hw3b 最终结果
贴一个自己 hw3b 的 match 结果让小伙伴们感受一下我们作业需要的结果是什么样子
的。
如果是同专业的小伙伴,最后拷贝到编辑器中仔细看一下,这个网页因为宽度有限,让
并排两列的比较呈现出来的很变形。
=================================================
Output of Building User Code
Explode the tar
c-.l
c-.y
makefile
scanType.h
symtab.h
symtab.c
20131123233236-(me~~)-CS445-F13-A3B.tar: POSIX tar archive (GNU)
Tests: directory
c-.l: lex description text
c-.y: lex description text
... 阅读全帖 |
|
d**********o 发帖数: 1321 | 7 hw3b deadline前版本
这里我也先公开承认一下自己早前犯过的错误,在这个楼的第 14 页、第 265 楼,我
有贴出自己的hw3b,但现在我必须向亲爱的读者一一您公开道歉。因为当时因为着急,
我没能找到hw3b deadline前的版本,就把这次作业后来的最终版本(也就是那个楼贴
出来的,只剩下ReturnK、CompoundK两条小尾巴的版本,那个版本被我改动了时间戳我
现在已经把它改回来了。相比于急于求成绩,我更希望自己作一个诚实的人,希望大家
能原谅)给贴出来了。因为我们作业deadline之后也还都是可以接着交的,所以任何作
业,老师都是可以根据后来的版本,追终到这个学生的最后进展的,这个最新进展老师
到底给不给分、就要看老师如何下决定了。
deadline前的版本,被我附在下面了。
当然,把自己的这个版本更新后,我愿为这个楼(这一次出来写的所有)属于自己的每
个贴子负责,所有写出来的,都是真实发生过的事。
=================================================
Output of Building User Code
Ex... 阅读全帖 |
|
d**********o 发帖数: 1321 | 8 最终版本的compiler测试结果
=================================================
Output of Building User Code
Explode the tar
c-.l
c-.y
scanType.h
makefile
symtab.h
symtab.cpp
emitCode.h
emitCode.cpp
20131214164956-huang-CS445-F13-A5.tar: POSIX tar archive (GNU)
Tests: directory
c-.l: lex description text
c-.y: lex description text
emitCode.cpp: ASCII C++ program text
emitCode.h: ... 阅读全帖 |
|
d**********o 发帖数: 1321 | 9 最终版本的compiler测试结果
=================================================
Output of Building User Code
Explode the tar
c-.l
c-.y
scanType.h
makefile
symtab.h
symtab.cpp
emitCode.h
emitCode.cpp
20131214164956-huang-CS445-F13-A5.tar: POSIX tar archive (GNU)
Tests: directory
c-.l: lex description text
c-.y: lex description text
emitCode.cpp: ASCII C++ program text
emitCode.h: ... 阅读全帖 |
|
d**********o 发帖数: 1321 | 10 hw3b c-.y file
上面这一楼贴了载止hw3b deadline时我match的结果(也就是老师可以以这些不match
的ERROR为借口不给后来我补上的成绩),但是因为当时我还是没有写完,后来感恩节
期间就接着又写了一些,而且hw5是based on hw3 & hw3b的基础上(当我hw5是based
on更好的hw3的结果时,我应该可以得更多的分吧)。
hw4因为写得比较顺利,就不曾保留任何交上去作业的output,没有什么一目了然的结
果是我可以贴在这里的。原本我是想要把自己最的一次作业hw5贴出来的,但那已经是
一个完整的compiler,而且以后我还需要用自己的course project来找工作,所以一定
就不贴最终结果了。那就贴一个hw3b的c-.y文件吧,它集中的hw1、hw2、hw3、 hw3b的
结果,是我自己hw3b *.y文件的最完整版本。这些作业里面也有很多机关一一人为增加
的难度,比如那六七个IO相关的function,不仅traverse tree、build syntax tree的
时候会成为一个考点(把它们作为一个node连在syntax... 阅读全帖 |
|
d**********o 发帖数: 1321 | 11 hw3b c-.y file
上面这一楼贴了载止hw3b deadline时我match的结果(也就是老师可以以这些不match
的ERROR为借口不给后来我补上的成绩),但是因为当时我还是没有写完,后来感恩节
期间就接着又写了一些,而且hw5是based on hw3 & hw3b的基础上(当我hw5是based
on更好的hw3的结果时,我应该可以得更多的分吧)。
hw4因为写得比较顺利,就不曾保留任何交上去作业的output,没有什么一目了然的结
果是我可以贴在这里的。原本我是想要把自己最的一次作业hw5贴出来的,但那已经是
一个完整的compiler,而且以后我还需要用自己的course project来找工作,所以一定
就不贴最终结果了。那就贴一个hw3b的c-.y文件吧,它集中的hw1、hw2、hw3、 hw3b的
结果,是我自己hw3b *.y文件的最完整版本。这些作业里面也有很多机关一一人为增加
的难度,比如那六七个IO相关的function,不仅traverse tree、build syntax tree的
时候会成为一个考点(把它们作为一个node连在syntax... 阅读全帖 |
|
j********x 发帖数: 2330 | 12 我觉得是有个bug,我还没想出来怎么构造反例,先不说具体的bug了
能过small和large case
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool isSymmetric(TreeNode* root) {
stack lhs;
for (TreeNode* l_root = root; l_root != NULL; l_root = l_root->left)
{
lhs.push(l_root);
}
stack rhs;
for (Tre... 阅读全帖 |
|
r*c 发帖数: 167 | 13 using System;
using System.Collections.Generic;
namespace WinningGame
{
class Program
{
static void Main(string[] args)
{
int nCount = 0;
int nTotalGames = 1000;
for (int i = 0; i < nTotalGames; i++)
{
Board bd = new Board();
//bd.PrintBoard();
bool bResult = bd.IsWinner();
if (bResult)
{
nCount++;
bd.Print... 阅读全帖 |
|
g*******s 发帖数: 59 | 14 friend ostream & operator <<(ostream &output, const Complex &rhs)
{
output<<"("<
return output;
}
can compile and run well;
however if inside class define
friend ostream & operator <<(ostream &output, const Complex &rhs);
outside class
template
ostream & operator <<(ostream &output, const Complex &rhs)
{
output<<"("<
return output;
}
ERROR:
main.obj : error LNK2019: unresolved external symbol |
|
r*c 发帖数: 167 | 15 //矩阵求连接图
#include
#include
#include
#include
#include
using namespace std;
enum ColorEnum{White, Black};
struct Cell
{
int row;
int col;
Cell(int r, int c): row(r), col(c){}
};
struct Cluster{
bool visited;
vector vec;
Cluster(int i, int j) : visited(false) {
vec.push_back(Cell( i, j));
}
bool isWithinRange(const Cell& a, const Cell& b){
return abs(a.row - b.row) <= 1 ... 阅读全帖 | |
|
r*c 发帖数: 167 | 16 //矩阵求连接图
#include
#include
#include
#include
#include
using namespace std;
enum ColorEnum{White, Black};
struct Cell
{
int row;
int col;
Cell(int r, int c): row(r), col(c){}
};
struct Cluster{
bool visited;
vector vec;
Cluster(int i, int j) : visited(false) {
vec.push_back(Cell( i, j));
}
bool isWithinRange(const Cell& a, const Cell& b){
return abs(a.row - b.row) <= 1 ... 阅读全帖 | |
|
Q*****a 发帖数: 33 | 17 没想到什么比O(n^2)好的方法,毕竟是partially order, 不是total order
但到不了O(n^2*l), 只是O(n^2 + nl).只需要过一遍string计算sign就可以了,另外将
数组按长度从大到小排列,提前剪枝也可以优化一些,但复杂度还是O(n^2)
const int INT_BITS = sizeof(int) * 8;
const int DATA_LEN = 256/INT_BITS;
class Int256 {
vector data;
public:
Int256(): data(DATA_LEN, 0) {
}
Int256(string s): data(DATA_LEN, 0) {
for (auto c: s) {
Set((unsigned char)c);
}
}
void Set(int l) {
data[l/INT_BITS] |= 1 << (l%INT_BITS);
}
... 阅读全帖 |
|
g******d 发帖数: 48 | 18 有一个疑问,比如下面的代码:
class A{
public:
A();
A(const A& rhs){ ia = rhs.a; }//rhs is reference
private:
int a;
};
问题是,既然a 是私有的成员,但是为什么在定义copy constructor时,rhs能够直接引
用呢(即rhs.a)? |
|
r*******y 发帖数: 1081 | 19 string library defines these overloaded operator +
string operator+ (const string& lhs, const string& rhs);
string operator+ (const char* lhs, const string& rhs);
string operator+ (char lhs, const string& rhs);
string operator+ (const string& lhs, const char* rhs);
string operator+ (const string& lhs, char rhs);
We know
string s = "hi" + "ji";
is not OK
If compiling this using g++ , I get the error :
invalid operands of types ‘const char [3]’ and ‘const char [3]’ to
binary ‘operator+’
I am a lit... 阅读全帖 |
|
E*****7 发帖数: 128 | 20 class String
{
public:
String(const char*);
String();
friend int strcmpu(const String& lhs, const String& rhs);
private:
char* s;
int len;
};
// Implementation for it to compile("Big Three" issue exists)
#include
class String
{
public:
String(const char* in_s)
{
if (in_s)
{
s = new char[strlen(in_s) + 1];
strcpy(s, in_s);
} else {
String();
}
}
String()
{
s = 0;
len = 0;
}
friend int strcmpu(const String& lhs, const String& rhs);
private:
char* s;
... 阅读全帖 |
|
B*******1 发帖数: 2454 | 21 How about this one?
class Interval {
public:
Interval(int start_, int end_): start(start_),end(end_){}
int start;
int end;
};
bool comp(Interval &rhs, Interval &lhs)
{
return (rhs.start == lhs.start ? rhs.end < lhs.end : rhs.start < lhs.start);
}
bool check(vector &input)
{
int left = input[0].start;
int right = input[0].end;
for (int i = 1; i < input.size(); i++) {
if (right < input[i].start) {
return false;
} else {
right = max(input[i].end, right);
}
}
return true;
}
int main()
... 阅读全帖 |
|
l*********y 发帖数: 142 | 22 #include
#include
#include
#include
#include
#include
#include
using namespace std;
class Counter {
public :
Counter() {
counter = 0;
}
void increment() {
counter++;
}
void decrement() {
counter --;
}
int getValue() {
return counter;
}
private:
int counter;
};
class COWString {
public:
COWString() {
pointer = NULL;
rc = new Counter();
}... 阅读全帖 |
|
k*****y 发帖数: 744 | 23 用stl写个练练手。
struct cmp_start{
inline bool operator()(const Interval lhs, const Interval rhs){
return lhs.start < rhs.start;
}
};
struct cmp_end{
inline bool operator()(const Interval lhs, const Interval rhs){
return lhs.end < rhs.end;
}
};
vector insert(vector &intervals, Interval newInterval) {
vector::iterator lower, upper;
lower = lower_bound(intervals.begin(), intervals.end(),
Interval(newInterval.st... 阅读全帖 |
|
k*****y 发帖数: 744 | 24 用stl写个练练手。
struct cmp_start{
inline bool operator()(const Interval lhs, const Interval rhs){
return lhs.start < rhs.start;
}
};
struct cmp_end{
inline bool operator()(const Interval lhs, const Interval rhs){
return lhs.end < rhs.end;
}
};
vector insert(vector &intervals, Interval newInterval) {
vector::iterator lower, upper;
lower = lower_bound(intervals.begin(), intervals.end(),
Interval(newInterval.st... 阅读全帖 |
|
b***y 发帖数: 2799 | 25 FAQ 24.12 Should the assignment operator be implemented by using placement n
ew and the copy constructor?
It's a well-known trap!
It is tempting to avoid duplicate code for the assignment operator for class
X by trying something like this.
#include
using namespace std;
X& X::operator= (const X& rhs)
{
if (this != &rhs) {
this->~X();
new(this) X(rhs);
}
return *this;
}
There are many problems with this approach. rhs will be sliced whenever it i
s not of type X, and the dtor-ne |
|
b**n 发帖数: 289 | 26 我有一个GVector 的Class,它有一个copy constructor是用template的。
template
class GVector{
public:
template GVector (const GVector& rhs): length_(rhs.length()
){
ptr_ = new (nothrow) T[length_];
assert(ptr_);
std::copy(&rhs(0), &rhs(0) + length_, ptr_);
}
但我每次在下列情况下(X = T)都会出现运行期的内存错误
GVector v(3);
GVector v2(v);
但如果在X != T时,就没有问题,比如:
GVector v(3);
GVector vi(v);
请问这是怎么回事? 我现在在把我以前写的一些class改成template的,结果问题好多
啊!
谢谢帮忙。 |
|
y**b 发帖数: 10166 | 27 ///////////////////////////////////////////////////////////
A:
class Widget {
public:
...
size_t weight() const;
size_t maxSpeed() const;
...
};
bool operator<(const Widget& lhs, const Widget& rhs)
{
return lhs.maxSpeed() < rhs.maxSpeed();
}
multiset widgets;
///////////////////////////////////////////////////////////
B:
class Widget {
public:
...
size_t weight() const;
size_t maxSpeed() const;
...
};
struct MaxSpeedCompare:
public binary_function {
bool operator()(... 阅读全帖 |
|
l*******s 发帖数: 7316 | 28 【 以下文字转载自 Prepaid 俱乐部 】
发信人: llaalways (camper), 信区: Prepaid
标 题: Moto E 1526 成功鼓捣成一开机就自动打开hotspot,每月自动拨号一次。
发信站: BBS 未名空间站 (Mon Mar 7 12:38:14 2016, 美东)
还是用Tasker, 就是在上次自动拨号的profile里加了3条。
wifi off
wifi tether on
svc data enable
但wifi tether on 在stock rom里出错,所以刷了flyme. 中间还试过CM13,CM13遇到
GAPP装不好的问题,所以放弃了。
flyme还有一个小问题,就是不能拦截拨号,这个以后再折腾。
将下面的内容保存为onBoot.prf.xml, 然后从Tasker里import profile 就可以了。
1457209583790阅读全帖 |
|
d****g 发帖数: 33 | 29 class myclass{
private:
int m;
public:
myclass(myclass & rhs){ m = rhs.m;}
};
拷贝函数中,m是私有的,为什么还能access rhs的私有成员m. |
|
j********x 发帖数: 2330 | 30 写了一个小时,没考虑特别的corner case,O(num of intervals of "except"),用了
上面提到的binary search:
#include
#include
#include
#include
#include
struct compareable_interval {
int start;
int end;
int real_start;
int real_end;
compareable_interval(int lhs, int rhs) : start(lhs), end(rhs), real_
start(lhs), real_end(rhs) {
}
compareable_interval(int l, int r, int rl, int rr) : start(l), end(r),
real_start(rl), real_end(rr) {
}
b... 阅读全帖 |
|
j********x 发帖数: 2330 | 31 写了一个小时,没考虑特别的corner case,O(num of intervals of "except"),用了
上面提到的binary search:
#include
#include
#include
#include
#include
struct compareable_interval {
int start;
int end;
int real_start;
int real_end;
compareable_interval(int lhs, int rhs) : start(lhs), end(rhs), real_
start(lhs), real_end(rhs) {
}
compareable_interval(int l, int r, int rl, int rr) : start(l), end(r),
real_start(rl), real_end(rr) {
}
b... 阅读全帖 |
|
h********l 发帖数: 67 | 32 下面是c++ essential里的例子:
class Triangular_iterator
{
public:
Triangular_iterator( int index ): _index(index-1){}
bool operator==( const Triangular_iterator& ) const;
private:
int _index;
};
inline bool Triangular_iterator::operator==(const Triangular_iterator& rhs )
const
{
return _index==rhs._index;
}
我的问题是: _index是private member, 为什么在operator==里可以直接用rhs._index
呢?
谢谢. |
|
j***i 发帖数: 1278 | 33 I define the class UPint and overload ++ operator.
In the main function c=a++ will have a error but c=++a is fine , anybody
know the reason?
int main()
{ UPint a(1);
UPint c;
c=a++// this will produce a error
// error: no matching function for call
// to ‘UPint::UPint(const UPint)’
c=++a// fine
return 0
}
//////////////////
class UPint
{
public:
UPint(int x=0): value(x){};
UPint(UPint &rhs):value(rhs.value){};
UPint& operator=(const UPint &rhs);
UPint& op |
|
h*******s 发帖数: 8454 | 34 en 比较的这些operator都是global的
bool operator== ( const string& lhs, const string& rhs );
bool operator== ( const char* lhs, const string& rhs );
bool operator== ( const string& lhs, const char* rhs ); |
|
z****e 发帖数: 2024 | 35 我们来验证一下这个转换的存在性。
class xyz
{
public:
const xyz& operator+(const xyz &rhs) const{return *this;}
private:
int n;
};
如果你把
const xyz& operator+(const xyz &rhs) const{return *this;}
变成
xyz& operator+(const xyz &rhs) const{return *this;}
就是错的了。
为什么呢:
invalid initialization of reference of type ‘xyz&’ from expression of
type ‘const xyz’
所以,这个例子来验证thrust说的那个implicit conversion to const。 |
|
c*******9 发帖数: 6411 | 36 I see both declaration, which one is better?
const xyz& operator+(const xyz &rhs) const);
const xyz operator+(const xyz &rhs) const;
I am thinking that you should not use const xyz& operator+(const xyz &rhs) const),
return a reference of new value is not a good idea, right? |
|
b********n 发帖数: 609 | 37 看来你很懂啊,看看这段code,算不算reseating:
“
object& operator=( const object& rhs )
{
if ( this != &rhs )
{
this->~object();
new ( this ) object( rhs );
}
return *this;
}
”
sth
the |
|
S****z 发帖数: 666 | 38 首先说 operator= (const Widget& rhs) //pass by ref
用引用可以省copy constructor
但是在下面一章的handle assignment to self in operator=
又说为了making operator= exception-safe
要用copy and swap技术
所以要把operato=定义为
Widget& Widget::operator=(Widget rhs) //pass by value
{
swap(rhs); //swap *this's data with the copy's
return *this;
}
一时说pass by ref一时又说pass by value
这样墙头草的书不读也罢!!
我太阳! |
|
c**b 发帖数: 2999 | 39 Widget rhs
Widget* rhs
Widget& rhs
可能书作者在炫耀他对这3个的区别很清楚.其实,写c++ 的那个人,就是为了炫耀他对内
存理解之深之透. |
|
f*******n 发帖数: 12623 | 40 He is wrong.
References are always constant. You cannot make a reference point to
something else after it is defined.
Even for pointers, the syntax "const A *rhs" or "A const *rhs" means pointer
to constant object. Only "A *const rhs" means "constant pointer". |
|
b***i 发帖数: 3043 | 41 const A& rhs 等价于 A const & rhs 就是rhs 是不改变A值的引用
我觉得,你说得有道理。第二点,就是thrust提到的,temporary 能bind 到const
reference,而不能非const。他不应该说你错,而应该是不完全。新标准可能对此有变
动,我得研究一下。 |
|
d**********u 发帖数: 3371 | 42 这里面 在typedef定义了priority_queue的新类型之后 可以用
mypq_type fifth(mycomparison(true)); // greater-than comparison
来取代指点定义中的最后一个template 参数
但是假如要取代其中一个或者两个参数呢
试验了一下并不成功 比如
mypq_type six(deque, mycomparision(true));
谢谢
class mycomparison
{
bool reverse;
public:
mycomparison(const bool& revparam = false)
{
reverse = revparam;
}
bool operator() (const int& lhs, const int&rhs) const
{
if (reverse) return (lhs>rhs);
... 阅读全帖 |
|
v******y 发帖数: 84 | 43 要用
Foo myFoo=*(new Foo());
正确的话,copy construct要重新定义
Foo(const Foo & rhs){
//memberwise copy of Foo's member from rhs to this
delete &rhs;//prevent memory leak
}
那以后就不能用, Foo myFoo=Foo();
这个delete stack上的Foo()是undefined.
虽然很多程序运行没有问题,但是还是不安全
有啥办法不?
还有如果
Foo *a=new Foo();
Foo b(*a);
a就给释放了。程序完全乱了
c++无法知道object是分配到heap还是stack的。 |
|
g****c 发帖数: 20 | 44 I see. But how to avoid creating temporary structures in overloading
operators? In the function below, the variable temp is used to store the
intermediate step of data manipulation. How to get around it? thx
Time operator+(const Time& lhs, const Time& rhs)
{
Time temp = lhs;
temp.seconds += rhs.seconds;
if (temp.seconds >= 60)
{
temp.seconds -= 60;
temp.minutes++;
}
temp.minutes += rhs.minutes;
if (temp.minutes >= 60)
{
temp.minutes -= 60;
temp.hours++ |
|
D**********r 发帖数: 602 | 45 Sexually-transmitted infections (STIs): The United Nations General Assembly
Special Session (UNGASS) 2010 report said there were 4912 syphilis cases
reported in 2009. The proportion of young people aged 15–24 made up 30% of
case reports in 2009 compared with 40% in 2007. In 2009, of those aged 15–
24 with syphilis, 49% were females and 51% were males. In 2007, 70% were
females and 30% were males. In the 2005 RTI/STI situation analysis, of 156
adolescents aged 15–19, 7.1% reported having experien... 阅读全帖 |
|
g*******y 发帖数: 1930 | 46 验证一下,
F(1)=1;
F(2)=1/2;
N=3:
j=1时:
lhs = 1/3
rhs = 1/3*(1+1/2) = 1/2
不选第一间房子
j=2,3时,lhs>rhs,可选
可选的j就是 j1 = 2,j2 = 3
带入公式:
F(N) = sum of Prof(max at jk && j1..jk-1不是"局部"最大)
= 1/3 + 1/3*(1/2) = 1/2 |
|
h****b 发帖数: 157 | 47 class xyz
{
public:
xyz &operator=(const xyz &rhs);
const xyz& operator+(const xyz &rhs) const;
const xyz& operator+(int m);
private:
int n;
};
main()
{
xyz a,b,c;
a=b+c+5; //为啥不对: binary '+' : no operator found which takes a right-
hand operand of type 'int' (or there is no acceptable conversion)
}
感谢 |
|
c****l 发帖数: 1280 | 48 1) b+c+5; execute from left to right.
b+c ->
const xyz& operator+(const xyz &rhs) const;
get const reference.
+5 ->
no const xyz& operator+(int m) const defined.
so get the problem
2)
I dont know why you need signature
const xyz& operator+(const xyz &rhs) const;
it might be better to define
xyz operator +( const xyz &left, const xyz &right) as friend
hope helpsl |
|
e**c 发帖数: 95 | 49 (1)const xyz& operator+(const xyz &rhs) const;
和
(2)const xyz& operator+(const xyz &lhs, const xyz &rhs) const;
有什么区别?
我不太明白用(1)的话, a=b+c 是如何实现的? |
|
c**********e 发帖数: 2007 | 50 If a class has + and = operator overloaded, and three objects a, b, c
constructed, which of the following is illegal?
a) (c=a+a)=b+c;
b) a=a=b+c;
More detail:
____________________
class X {
public:
X& operator=(const X& rhs);
const X& operator+(const X& rhs) const;
private;
int n;
};
int main() {
X a, b, c;
// Statement goes here
return 0;
} |
|