听课笔记---程序设计与算法(三)C++面向对象程序设计(郭伟老师)---第一周
2018-03-25 22:33
274 查看
Week1
Contents
ReferenceInline function
Overloaded function
Default argument
Dynamic memory allocation in C++
const qualifier
Class and Object—Basic ideas
想法与体悟
引用引用可以被视为变量的别名,其行为与常指针
T * const相似,但并不需要 * 运算符,应用在函数中可以使得实参处理代码更体面。(见源码 EasySwap.cpp HardSwap.cpp)
引用也可成为函数返回值类型,此时若
T & F(...) {... return n}则等价于
T & F(...)=n(见源码WeirdReturnValur.cpp)
内联函数
内联函数用以提高程序运行速度。不以压栈形式调用函数,而是使用将函数体代码插入主函数的方式。
函数重载
同一函数名,参数数量或类型不同,即为重载关系,编译器根据参数自动选择合适的函数。
函数参数缺省值
在函数中可以对从某一个开始的参数设定缺省值,调用函数时,可以不给出右边一定量的参数。
C++的动态内存分配
以
new T分配单个变量, 以
new T[i]分配数组,均返回指针类型。可用于指针数组的初始化(见源码WeirdInitializeArray.cpp)
以
delete P回收单个变量 以
delete []P回收数组,同一地址不可delete一次以上,必须delete动态内存
const 关键字
const 关键字用于定义常量,并且可以使用类型判断,这一点上优于
#define
常引用:
const T &不可在引用上改变被引用的值,类似于
const T * const
类和对象基础
类是自定义数据结构,具有成员变量和成员函数。类定义出的变量是类的实例,也就是对象。每个对象有自己的成员变量,所占空间不小于成员变量所占空间之和。一个类中的所有对象共享成员函数,故这部分空间不算在对象所占空间内。
练习源码
EasySwap.cpp#include<iostream> using namespace std; class A { public: int x; int getX() { return x; } }; void swap(A & a, A & b) { int tmp = a.x; a.x = b.x; b.x = tmp; } int main() { A a, b; a.x = 3; b.x = 5; swap(a, b); cout << a.getX() << "," << b.getX(); return 0; }
HardSwap.cpp
#include<iostream> using namespace std; void swap(int * & a, int * & b) { int * tmp = a; a = b; b = tmp; } int main() { int a = 3, b = 5; int * pa = &a; int * pb = &b; swap(pa, pb); cout << *pa << "," << *pb; return 0; }
WeirdInitArray.cpp
#include<iostream> using namespace std; int main() { int * a[] = {NULL, NULL, new int[1], new int[6], NULL}; *a[2] = 123; a[3][5] = 456; if (! a[0]) { cout << *a[2] << "," << a[3][5]; } return 0; }
WeirdReturnValue.cpp
#include<iostream> using namespace std; int & getElement(int * a, int i) { return a[i]; } int main() { int a[] = {1, 2, 3}; getElement(a,1) = 10; cout << a[1]; return 0; }
相关文章推荐
- 听课笔记---程序设计与算法(三)C++面向对象程序设计(郭伟老师)---第一周
- cs50 算法 程序设计 笔记(1)
- 【听课笔记】算法导论2
- C程序设计笔记——第二章 算法-程序的灵魂
- 程序设计实习MOOC - 程序设计与算法(三)第一周测验 4-神秘的数组初始化
- 第一周《C语言及程序设计》视频笔记数据的输入
- 面向对象程序设计第一周编程题(翁恺老师)
- 【算法竞赛入门经典】第二章:循环结构程序设计 代码及笔记
- 程序设计与算法(二)算法基础_北京大学 学习笔记(一)
- C++程序设计:基础、编程抽象与算法策略的笔记
- 【学习笔记】算法竞赛:chapter 2 循环结构程序设计
- 冯鹏程老师主讲 企业资本运营之道 听课笔记(转自新浪吴永达博客)
- 程序设计与算法 第一周测验
- 挑战程序设计竞赛2 数据结构与算法学习笔记
- 『算法学习笔记』1st day. 顺序结构程序设计
- 笔记1_算法,程序设计,语言等_哈佛_计算机科学cs50_David J. Malan
- 菜鸟的ACM之路(1)北大MOOC算法基础笔记__第一周__枚举
- 笔记0_算法,程序设计,语言等_哈佛_计算机科学cs50_David J. Malan
- windows程序设计 之 「KeyView1」范例算法分析 笔记
- 『算法学习笔记』2nd day. 分支程序设计