C++学习05

侯捷C++面向对象编程(下)课程打卡 Day5 1 转换 1.1 转换函数 将当前对象的类型转换成其他类型 以operator开头,函数名称为需要转换的类型,无参数 前面无需写返回类型,编译器会自动根据函数名称进行补充 转换函数中,分子分母都没有改变,所有通常加const\ // class Fraction里的一个成员函数 operator double() const { return (double) (m_numerator / m_denominator); } Fraction f(3,5); double d = 4 + f; //编译器自动调用转换函数将f转换为0.6 1.2 non-explicit-one-argument ctor 将其他类型的对象转换为当前类型 ...

2023年03月19日 · 3 分钟 · 1455 字 · ZhaoYang

C++学习06

侯捷C++面向对象编程(下)课程打卡 Day6 4. specialization 特化 4.1 全特化 full specialization 模板是泛化,特化是泛化的反面,可以针对不同的类型,来设计不同的东西 其语法为template<> struct xxx<type> template<> struct hash<char> { ... size_t operator()(char& x) const {return x;} }; template<> struct hash<int> { ... size_t operator()(int& x) const { return x; } }; 这里编译器就会用 int 的那段代码;注意:hash<int>() 是创建临时变量 cout << hash<int>()(1000) 4.2 偏特化 partial specialization 4.2.1 个数上的偏 例如:第一个模板参数我想针对 bool 特别设计 ...

2023年03月19日 · 4 分钟 · 1725 字 · ZhaoYang

C++学习04

侯捷C++面向对象编程(上)课程打卡 Day4 8、 静态 模板 namespace 8.1 static 对于非静态的函数和数据: 非静态的成员函数通过this指针来处理不同的数据(一份函数–>多个对象) 对于静态的函数和数据: ...

2023年03月18日 · 9 分钟 · 4281 字 · ZhaoYang

C++学习03

侯捷C++面向对象编程(上)课程打卡 Day3 5、操作符重载与临时对象 5.1操作符重载 在C++中,我们可以定义加法等操作符,比如我们可以定义两个是石头的加法 5.1.1成员函数实现 成员函数: complex :: function …… 前面带有class的名称(在class里事先声明了的) ...

2023年03月17日 · 5 分钟 · 2064 字 · ZhaoYang

C++学习02

2、构造函数 2.1 inline函数 定义类的时候,可以直接在body中定义函数(inline函数,在body中定义完成),也可以只是在body中声明函数 inline内联函数:如果定义的函数是内联函数,那么会运行比较快,尽可能定义为内联函数 ...

2023年03月16日 · 4 分钟 · 1704 字 · ZhaoYang

C++学习01

侯捷C++面向对象编程(上)课程打卡 Day1 1、头文件与类的声明 1.1 C vs C++ C语言中,Data和函数是分别定义,根据类型创建的。这样建立的变量为全局变量。 C++中,将Data和函数包含在一起形成类。使用类实例化出一个对象,即为面向对象。类中的数据和函数都是局部的,不是全局的。 ...

2023年03月15日 · 2 分钟 · 550 字 · ZhaoYang