C++面向对象
0x01基础概念
1.引用
点击查看代码
void iswap(int& a, int& b) {//除C中& + *指针的形式外C++引用
int t = a;
a = b, b = t;
}
int x = 4;
int& iValue() {return x;}
int main() {
//引用
int n;
int& r = n;//初始化一个变量,此时r = n
r = 4;
//函数引用1
int a = 3, b = 4;
iswap(a, b);
//函数引用2:引用类型(引用返回值)可以对返回值赋值
iValue() = 40;
//常引用
const int& r1 = n;
r = 200;//×,不能通过常引用修改引用内容
n = 300'//√
return 0;
}
2.const : const 类型, 为不可修改常量
3.动态内容分配
点击查看代码
//类型:返回值都为类型指针
指针 = new 类型
//数组
指针 = new 类型 [大小]
int n = 110;
int *p = new int [n + 10];
p[n] = 9;
//动态分配存储空间要进行释放,否则会造成持续占用
delete 指针;
delete [] 指针;//释放数组
4.内联函数,函数重载,函数缺省参数
内联函数inline:
//内联函数:减少函数栈调用开销:将函数直接插入调用位置不产生调用
用法:inline 函数() { }
inline int Max(int a, int b) {
if(a > b) return a;
return b;
}
点击查看代码
//函数重载:名字相同但参数个数,类型不同
根据调用实参类型和个数来匹配
int a = 1, b = 2, c = 3;
max(a, b, c);
//函数可以以最右边连续若干给个缺省
函数f(int x1, int x2 = 2, int x3 = 3) { }
f(10)//等效f(10, 2, 3)
f(10, 8)等效f(10, 8, 3)
f(10, ,8)//×
5.类: 通过类定义出的变量即对象
结构体同
点击查看代码
结构化设计没有"封装"和"隐藏"概念,debug难度上升,且错综复杂调用不以复用
则引入面向对象:类 + 类 + ··· + 类//对一类进行捆绑即类,即"封装"
面向对象4特点:抽象,封装,继承,多态
class CRectangle {
public:
int w, h;
int Area() {
return w * h;
}
int Perimeter() {
return 2 * (w + h);
}
void Init(int w_, int h_) {
w = w_, h = h_;
}
};
int main() {
int w, h;
CRectangle r;//r是一个对象
cin >> w >> h;
r.Init(w, h);
cout << r.Area() << ' ' << r.Perimeter() << endl;
return 0;
}
浙公网安备 33010602011771号