C++ 學(xué)習(xí)筆記(6)
1. 類(lèi)聲明中定義的函數(shù)都被自動(dòng)處理為inline函數(shù)。
2. Triangular t5(); 這句話(huà)似乎聲明了一個(gè)類(lèi)的實(shí)例,但事實(shí)上,C++為了保持與C語(yǔ)法的一致,該語(yǔ)句會(huì)被解釋成一個(gè)返回Triangular對(duì)象的函數(shù);正確的聲明應(yīng)該去掉()。
3. 考慮下面一段代碼
class Matrix {
public:
Matrix( int row, int col ) // ...
~Matrix() { delete [] _pmat; }
private:
int _row, _col;
double *_pmat;
};
{
Matrix mat(4, 4);
{
Matrix mat2 = mat;
}
}
把mat復(fù)制給mat2后,mat2中的_pmat與mat的_pmat指向同一個(gè)數(shù)組,在mat2所在的域結(jié)束后,mat2被釋放,同時(shí)刪除了_pmat指針指向的內(nèi)容。錯(cuò)誤發(fā)生。
解決辦法是在Matrix::Matrix( const Matrix &rhs )中詳細(xì)指出深層拷貝的方法,同時(shí)實(shí)現(xiàn)賦值操作符的重載。
4. mutable 和 const
const方法無(wú)法修改類(lèi)的成員,mutable成員除外。