C++ 繼承
- 派生類在繼承時默認的訪問修飾符為 private,一般都會使用 public捕发,這樣才能繼承基類 public 和 protected 型的成員變量和函數(shù)
- 派生類可以訪問基類中所有的非私有成員。因此基類成員如果不想被派生類的成員函數(shù)訪問逛揩,則應在基類中聲明為 private
繼承類型
- 公有繼承(public):當一個類派生自公有基類時塑悼,基類的公有成員也是派生類的公有成員,基類的保護成員也是派生類的保護成員满力,基類的私有成員不能直接被派生類訪問焕参,但是可以通過調(diào)用基類的公有和保護成員來訪問。
- 保護繼承(protected): 當一個類派生自保護基類時油额,基類的公有和保護成員將成為派生類的保護成員叠纷。
- 私有繼承(private):當一個類派生自私有基類時,基類的公有和保護成員將成為派生類的私有成員潦嘶。
#include <iostream>
using namespace std;
// 基類
class Shape {
public:
void setWidth(int w) {
width = w;
}
void setHeight(int h) {
height = h;
}
protected:
int width;
int height;
private:
void show() {
cout << "私有方法" << endl;
}
};
// 派生類 access specifier: public
// 才能繼承基類公有的成員變量和函數(shù)
class Rectangle : public Shape {
public:
int getArea() {
return (width * height);
}
};
int main() {
Rectangle rect;
rect.setWidth(5);
rect.setHeight(7);
cout << "Total area: " << rect.getArea() << endl; // 輸出對象的面積
return 0;
}
Total area: 35
多繼承
#include <iostream>
using namespace std;
// 基類 Shape
class Shape {
public:
void setWidth(int w) {
width = w;
}
void setHeight(int h) {
height = h;
}
protected:
int width;
int height;
};
// 基類 PaintCost
class PaintCost {
public:
int getCost(int area) {
return area * 70;
}
};
// 派生類掂僵,繼承了2個基類的方法
class Rectangle : public Shape, public PaintCost {
public:
int getArea() {
return (width * height);
}
};
int main(void) {
Rectangle Rect;
Rect.setWidth(5);
Rect.setHeight(7);
int area = Rect.getArea();
cout << "Total area: " << area << endl; // 輸出對象的面積
cout << "Total paint cost: $" << Rect.getCost(area) << endl; // 輸出總花費
return 0;
}
Total area: 35
Total paint cost: $2450
最后編輯于 :
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者