头文件与类的声明
- 防卫式声明

构造函数
- inline函数
- 内联函数是C++中的一种特殊函数,它可以像普通函数一样被调用,但是在调用时并不通过函数调用的机制而是通过将函数体直接插入调用处来实现的,这样可以大大减少由函数调用带来的开销,从而提高程序的运行效率。一般来说inline用于定义类的成员函数。
- inline适用的函数有两种,一种是在类内定义的成员函数,另一种是在类内声明,类外定义的成员函数,对于这两种情况inline的使用有一些不同:
- 类内定义:可以不用在函数头部加inline关键字,因为编译器会自动将类内定义的函数声明为内联函数
class temp { public: int amount; //构造函数 temp(int amount) { this->amount = amount; } //普通成员函数,在类内定义时前面可以不加inline void print_amount() { cout << this->amount; } } - 类内声明函数,在类外定义函数;类内声明可以不用加上inline关键字,但是类外定义函数体时必须要加上
- 类内定义:可以不用在函数头部加inline关键字,因为编译器会自动将类内定义的函数声明为内联函数
- 优点\缺点
- 内联函数和宏定义的区别
- 注意事项
参数传递与返回值

- 相同class的各个对象互为友元

操作符重载与临时对象
- 成员函数重载
- 非成员函数重载
#include<iostream>
using namespace std;
class Number {
public:
Number operator+(const Number& num) {
cout << "类内重载" << endl;
Number sum;
sum.num1 = num1 + num.num1;
sum.num2 = num2 + num.num2;
return sum;
}
Number(int a, int b) :num1(a), num2(b) {}
int num1;
int num2;
Number() = default;
};
Number operator+(const Number& num1, const Number& num2) {
cout << "类外重载" << endl;
Number sum;
sum.num1 = num1.num1 + num2.num1;
sum.num2 = num1.num2 + num2.num2;
return sum;
}
int main()
{
Number n1(1, 2);
Number n2(1, 2);
Number n3 = n1+n2;
return 0;
}
- 类内类外同时实现,优先调用类内。
- 一个函数既可以写成成员函数也可以写成非成员函数。但是对于
<<的重载,只能选择非成员函数的形式
复习Complex类的实现过程
三大函数:拷贝构造,拷贝赋值,析构

- 类中又指针,类中一定要重写拷贝构造和拷贝赋值。
- 下面调用的都是拷贝构造函数
String s1(s2); String s1 = s2;

堆,栈与内存管理






- 复数内存细节

- 含有指针的类



扩展补充:类模板,函数模板
static

-
类中的static变量只是在类中声明,需要在类外定义
-
 -
单例设计模式
-
 -

cout
template
组合与继承
复合(Composition)



委托(Delegation=Composition by reference)

继承

- 父类的析构函数必须要是
virtual

虚函数与多态
虚函数
- 函数的继承,继承的是调用权




委托相关设计
Composite设计模式

Prototype












381

被折叠的 条评论
为什么被折叠?



