随笔 - 1759  文章 - 0  评论 - 109  阅读 - 430万

随笔分类 -  侯捷C++课程笔记

P9 member template ,成员模板
摘要:注解: 黄色部分就是成员模板。 黄色那一块是模板里面的一个成员,而它本身又是一个template, 黄色那一段就叫做成员模板。 外头那个模板是个允许变化的东西,T1和T2可以变化。而加入T1和T2确定之后,里面的模板(黄色段落)又可以变化,U1和U2可以变化。 举一个例子: 注解: 首先制造一个p, 阅读全文
posted @ 2020-09-03 23:48 一杯明月 阅读(243) 评论(0) 推荐(0) 编辑
P8 function template ,函数模板
摘要:函数模板在使用的时候不必指明类型。 注解: template<class T>里面的class 可以换成typename. T是什么都可以。 这样的函数模板的使用会比类模板更简单。类模板用的时候还要指定数据类型,函数模板在使用的时候不必指明它的type.即不必指明T是什么。为什么呢?因为函数模板在使 阅读全文
posted @ 2020-08-28 10:23 一杯明月 阅读(243) 评论(0) 推荐(0) 编辑
P7. class template, 类模板,模板类
摘要:不用模板的情况: class complex { public: complex(double r=0,double i=0):re(r),im(i){} complex& operator +=(const complex&); double real() const { return re; } 阅读全文
posted @ 2020-08-27 00:22 一杯明月 阅读(312) 评论(0) 推荐(0) 编辑
6. namespace经验谈
摘要:这是个小话题。 其实就是把一些东西区分开来,办公室A和办公室B缩写的function可能不一样,我们各自取个名字把自己的东西包起来。 int main() { jj01::test_member_template(); jj02::test_template_template_param(); } 阅读全文
posted @ 2020-08-26 23:55 一杯明月 阅读(205) 评论(0) 推荐(0) 编辑
pointer-like classes, 关于智能指针
摘要:一个C++的class,做出来后,可能会像两种东西。 所产生出来的对象像一个指针。所以叫做pointer-like classes. 所产生出来的对象像一个函数,有点特别哦。 为何设计一个类产生的对象要像一个指针,因为你想要它做比指针更多的事情,所以通常这样做出来的东西,又叫做智能指针(更聪明的指针 阅读全文
posted @ 2020-08-16 22:58 一杯明月 阅读(379) 评论(0) 推荐(0) 编辑
non-explicite-one-argumen-constructor
摘要:class Fraction { public: Fraction(int num,int den=1):m_numerator(num),m_denominator(den) { cout << "构造函数被默默调用了哦!!!" << endl; } ~Fraction(){ cout << "析 阅读全文
posted @ 2020-08-16 19:47 一杯明月 阅读(304) 评论(0) 推荐(0) 编辑
2. conversion function 转换函数
摘要:转换函数的问题:谁把谁转换成什么? 设计一个class的对象a,a可不可以转换成另外一种类型,或者另外一种类型可不可以转换成a 注解: int/int 会丢失精度(网友弹幕),如5/2=2. 5/2输出的是2. cout << (double)5 / 2 << endl; 这样输出的就是2.5(相当 阅读全文
posted @ 2020-08-02 11:13 一杯明月 阅读(343) 评论(0) 推荐(0) 编辑
12. 虚函数与多态
摘要:Inheritance(继承) with virtual functions(虚函数) non-virtual函数(不是虚函数):你希望drived class(子类)不要重新定义(overide,覆盖)。 virtual(虚)函数:你希望devired class(子类)最好去重新定义(overi 阅读全文
posted @ 2020-07-29 09:52 一杯明月 阅读(293) 评论(0) 推荐(1) 编辑
11.组合与继承
摘要:Inheritance(继承) Composition(复合) Delegation(委托) 像字符串类,复数类一把不会和其他类发生关联,但有的类可能需要和其它类发生关联,这就是面向对象的思想。 Composition(复合) ,表示has-a 注解: queue跟deque的关系就是复合关系,这就 阅读全文
posted @ 2020-07-26 09:58 一杯明月 阅读(296) 评论(0) 推荐(0) 编辑
10. 扩展补充:类模板,函数模板及其他
摘要:1.静态数据与非静态数据的区别 静态数据只有一份,位于内存的某个位置,比如,100万个人去开银行账户,那么账户的数量就是100万个,但是年利率都一样,所以年利率数据应该设计成静态数据,它就一份。 2. 静态成员函数与非静态成员函数的区别 非静态成员函数有this 指针,静态成员函数没有 this 指 阅读全文
posted @ 2020-02-27 22:50 一杯明月 阅读(199) 评论(0) 推荐(0) 编辑
9. 复习String类是实现过程
摘要:1. 设计一个class,总是先思考需要什么样的(私有)数据,字符串里面一定会放很多字符。想法1是利用数组存放字符,但是这种想法不好,因为不知道要存放的字符有多少,占多少空间不知道,所以预先设定的大小不好确定。所以私有数据应该是一个指针(第12行),将来放多大的内容,用new的方式动态分配内存大小。 阅读全文
posted @ 2020-02-14 14:16 一杯明月 阅读(255) 评论(0) 推荐(0) 编辑
8. 堆、栈与内存管理
摘要:1. 栈(stack)和堆(heap) stack,是存在与某作用域(scope)的一块内存空间(memory space),例如当你调用函数,函数本身即会形成一个stack用来放置它所接收的参数,以及返回地址。 在函数本体(function body)内声明的任何变量,其所使用的内存块都取自上述s 阅读全文
posted @ 2020-02-13 11:59 一杯明月 阅读(300) 评论(0) 推荐(0) 编辑
7. 三大函数:拷贝构造函数,拷贝赋值函数, 析构函数
摘要:字符串类的例子,是侯老师自己写的,因为标准库的例子功能太复杂了。 编译器提供的拷贝赋值只是拷贝了对象的指针,没有真正拷贝对象。 1. 拷贝构造函数和拷贝赋值函数 2. 3个特殊函数 只要类里面带有指向某个数据类型的指针,一定需要写拷贝构造函数和拷贝赋值函数。3个特殊函数(Big three): 拷贝 阅读全文
posted @ 2020-02-12 22:37 一杯明月 阅读(999) 评论(0) 推荐(0) 编辑
6. 复习complex类的实现过程
摘要:1. 编程实例(来自于standard library) 传递引用,占用的空间大小是4个字节; double类型的数据,占用的空间是4个字节; 传递引用是为了节约空间。 阅读全文
posted @ 2020-02-12 18:20 一杯明月 阅读(274) 评论(0) 推荐(0) 编辑
5. 操作符重载与临时对象
摘要:1. 操作符重载之一:把操作符重载成成员函数 在C++里面,操作符是一种函数,这是C++的一大特点。 操作符重载的原因: 因为函数库中没有两个复数直接相加的函数,只有实数和实数相加的函数,如1.2+2.3=3.5。 对于成员函数:+= c2调用了+=,c2就是this,或者说this此时就指向了c2 阅读全文
posted @ 2020-02-11 11:13 一杯明月 阅读(400) 评论(0) 推荐(0) 编辑
4. 参数传递与返回值
摘要:1. 定义在私有区域中的构造函数(内容略) 2. 常量成员函数(const member functions) double real() const { return re; } double imag() const { return im; } 上面这两个函数只是把函数的实部和虚部拿出来,并不 阅读全文
posted @ 2020-02-10 11:55 一杯明月 阅读(498) 评论(0) 推荐(0) 编辑
3. 构造函数
摘要:1. inline(内联)函数 inline函数很好,其优点是:传的速度快。那所有函数都做成inline()函数岂不是很好,有的函数即便放在class body内完成定义,编译器也没办法变成inline()函数。简单的函数可以,复杂的不可以。如下面的两个函数,都是只是返回一个数据,如此简单的函数想必 阅读全文
posted @ 2020-02-10 09:42 一杯明月 阅读(507) 评论(0) 推荐(0) 编辑
2. 头文件与类声明
摘要:1. C倾向于根据数据创建一个变量; C++倾向于根据数据和处理数据的函数创建一个对象。 2. 复数及字符串中包含的内容和需要设计的相应处理函数: 3.文件扩展名不一定是.h或者.cpp,也可能是.hpp(头文件和主程序放在一个文件中实现)。 4.一个简单的C++程序示例(输出一个变量的值到屏幕上) 阅读全文
posted @ 2020-02-09 11:55 一杯明月 阅读(581) 评论(0) 推荐(0) 编辑
1. C++编程简介
摘要:面向对象的语言不仅有C++,但它被大规模使用。 C++(C with class) C++版本: C++ 98(1.0) C++ 03 C++ 11(2.0) C++ 14 C++的class分为: 阅读全文
posted @ 2020-02-09 10:38 一杯明月 阅读(581) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示