授课思路
c课程框架总结
类基本概念入门安践
面向过程和面向对象编程感性认识
类和对象的hello例子、典型错误案例(引出为什么要有成员函数)
C和C+语言关系
C++对c的扩展
namespace (作用域)
实用性
register函数检测增强
struct类型加强
c++更加强调类型(c+中所有的变量和函数都必须有类型)
const
引用int &b=c; const int &b=10;
boolen
a<b?a:b 三目运算符
struct 类型加强
内联函数inline
函数默认参数
函数占位参数
默认参数和占位参数混搭
函数重载(overroad)
new delete
用面向对象的方法
1.类的抽象 成员变量和成员函数
2.实例化 类的对象
3.求面积
面向过程加工的是 一个一个的函数
面向对象加工的是:一个一个的类
4.main集成测试
思考1:类的调用 执行过程分析==>类代码不是一步一步指向
类是一个数据类型,(固定大小内存块的别名); 定义一个类,是一个抽象的概念,不会给你分配内存
用数据类型定义变量的时候,才会分配内存
思考2:抛砖: c++编译器是如何处理 多个对象,调用类的成员函数的;具体一点:如何区分是c1 c2 c3 调用了getS,抛砖…
三目运算符
- 在C语言中,表达式的返回值是变量的值
- 在C+中,表达式返回的是变量的本身(变量所标明的那块内在空间的地址)
c语言中的三目运算符返回的是变量值,不能作为左值使用.
c++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方.
c语言中的const是一个冒牌贷 c++中的const是真正的常量
int main(){
const int a = 10;
int *p =NULL;
p=(int *) &a;
*p = 20;
printf("a:%d \n",a);
}
const 和define
对比加深
C++中的const常量类似于宏定义
const int c = 5; ≈ #define c 5
C++中的const常量与宏定义不同
const常量是由编译器处理的,提供类型检查和作用域检查
宏定义由预处理器处理,单纯的文本替换
const常量是由编译器处理的,提供类型检查和作用域检查
结论
C语言中的const变量
C语言中const变量是只读变量,有自己的存储空间
C++中的const常量
可能分配存储空间,也可能不分配存储空间
当const常量为全局,并且需要在其它文件中使用,会分配存储空间
当使用&操作符,取const常量的地址时,会分配存储空间
当const int &a = 10; const修饰引用时,也会分配存储空间
引用的本质
引用的本质
1)引用在C++中的内部实现是一个常指针
Type& name Type* const name
2)C++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占用的空间大小与指针相同。
3)从使用的角度,引用会让人误会其只是一个别名,没有自己的存储空间。这是C++为了实用性而做出的细节隐藏
Int main()
{
int x = 10;
func(x);
}
4) 请仔细对比间接赋值成立的三个条件
1定义两个变量 (一个实参一个形参)
2建立关联 实参取地址传给形参
3*p形参去间接的修改实参的值
函数返回值是引用(引用当左值)
C++引用使用时的难点:
当函数返回值为引用时
若返回栈变量
不能成为其它引用的初始值
不能作为左值使用
若返回静态变量或全局变量
可以成为其他引用的初始值
即可作为右值使用,也可作为左值使用
C++链式编程中,经常用到引用,运算符重载专题