作業(yè):
答案參照課堂Code-0521
class MyString{
public:
MyString();//返回空串
MyString(const char*p);//若p不為空砚尽,正惩徘拷貝,為空,則返回空串
MyString(const MyString& obj);
~MyString();
//賦值運算符重載
MyString& operator=(const char*p);//s="a";
MyString& operator=(const MyString& s);//s=s1;
//[]
char &operator[](int index);//s[index]
//<< cout<<s4
friend ostream& operator<<(ostream&out,MyString& obj);
friend istream& operator>>(istream&in,MyString& obj);
//== if(s2=="s2")或者if(s3==s2)
bool operator==(const char*p)const;//this指針不能變
bool operator==(const MyString&s)const;
//!=
bool operator!=(const char*p)const;
bool operator!=(const MyString&s)const;
//< if(s<"bbb")或者if(s3<s2)
int operator<(const char* p);
int operator<(const MyString& s);
int operator>(const char* p);
int operator>(const MyString& s);
private:
int m_length;
char *m_Space;
};
重載()運算符和函數(shù)調(diào)用
class F{
public :
double operator ( ) ( double x , double y ) {
return x * x + y * y ;
}
};
void main ( )
{
F f ;
f.getA();
cout << f ( 5.2 , 2.5 ) << endl ; // ---->f . operator() (5.2, 2.5)
}
邏輯&&和||能否重載?
請參照課件仰美。
&&和||內(nèi)置實現(xiàn)了短路規(guī)則
操作符重載是靠函數(shù)重載來完成的
操作數(shù)作為函數(shù)參數(shù)傳遞
C++的函數(shù)參數(shù)都會被求值,無法實現(xiàn)短路規(guī)則
待補充:常對象儿礼,常成員函數(shù)
類的成員函數(shù)可被const修飾咖杂,那么const修飾的是?
void function()const ?
結(jié)論:const修飾的是this指針所指向的內(nèi)存空間蚊夫。