OVSolitario-io

导航

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;
}

0x04运算符重载


0x02类基础


0x03类提高


posted on 2025-12-31 15:44  TBeauty  阅读(0)  评论(0)    收藏  举报