《C++面向对象程序设计-基于Visual C++ 2010》读书笔记

本文详细介绍了C++的面向对象特性,包括数据类型、基本控制结构、函数、类与对象、继承、多态性、模板和标准模板库。讨论了有名常量、位运算、数组、指针、内存管理、函数重载、运算符重载、构造函数、拷贝构造函数、静态成员、友元、深拷贝与浅拷贝等概念,强调了程序的可读性和可维护性。此外,还涵盖了类的继承方式、派生类与基类的关系、虚函数与多态性,以及函数和类模板的应用,展示了C++强大的泛型编程能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据类型与基本运算
  1. 字符串常量按字符书写顺序依次存储在内存中,并在最后存放空字符’\0’表示字符串常量的结束。ASCII字符在内存中占1个字节,而中文字符占2个字节

  2. 有名常量是指用关键字const修饰的变量。由于该变量只能读取,而不能被修改,所以 也称为常变量。有名常量必须在定义时进行初始化,之后不再允许赋值。例如:

const double PI=31415926;
const int Max=1000;

有名常量与变量一样,存储在程序的数据区中,可以按地址进行访问。变量在初始化之后还可以对其进行修改,但对有名常量的任何修改都会引发编译器报错。

使用有名常量的好处在于:

  • 增加程序的可读性——用具有实际含义的标识符代替具体的数值,程序的可读性大大增强;
  • 便于程序的维护——假设程序中多处用到圆周率,如果需要提高它的精度,则只需在有名常量的定义处修改即可。对于大型软件,程序的可读性和可维护性是两个极其重要的评价指标。

    1. 位运算的操作数只能是boolcharshortint类型数值,不能是floatdouble实型数。支持的运算有按位取反(~)、左移(<<)、 右移(>>)、按位与(&)、按位或(|)和按位异或(^)。有符号数时,向左移动n位,丢弃左边n位数据,并在右边填充0,同时把最高位作为符号位;向右移动n位,丢弃右边n位数据,而左边正数补0,负数补1。

    2. 不能用变量来定义数组大小

    3. 指针变量与整数相加或相减的结果是指针前移或后移若干个单元,单元大小为sizeof(type)

    4. 在输入输出语句中插入hex(十六进制)、oct(八进制)和dec(十进制)指明输入输出数据认定的格式。例如:

//以十六进制输入数据
//若输入f  11,则x和y的值分别为15和17
cin>>hex>>x>>y;
//hex为十六进制格式控制符,输出100
//设置过hex后,整数均以十六进制格式输出,除非用oct或dec重新设置
cout<<hex<<256<<endl;
  1. 对于字符数组,不能用等号运算符对其赋值。strcpy(参数1,参数2)是系统提供的函数,其功能是将参数2的内容复制到参数1所指定的字符数组中。例如:
//初始化的时候可以直接赋值
char str[20] = "";
strcpy(str, "星期日");
基本控制结构和函数
  1. 跳转语句

    • break:在循环语句中,break语句的作用是终止循环,流程跳转至循环语句之后。需要注意的是,对于循环嵌套语句,如果break语句是在内循环中,则其只能终止其所在的循环语句的执行,流程跳转至外循环。
    • continue:其功能是将流程跳转至当前循环语句的条件表达式处,判断是否继续进行循环。

continue语句与break语句的区别是:continue语句是终止本轮循环,而break语句是终止本层循环。此外,continue语句只能用在循环语句中。

  1. ^表示按位异或

  2. C++容许在函数定义时为形参指定默认值。默认值的指定遵守“从右到左连续定义”的规则。例如:

double max(double a, double b=0, double c=0);
  1. 某些情况下,我们需要修改实参的值,而某些情况下,我们不想修改实参的值:

    • 在C语言中:如果不想修改我们就直接传递实参,如果对象太大我们就传递指针,并且声明指针是指向const对象的;如果想修改实参的值,我们只能传递实参的指针,然而此时指针就不能用const修饰了。
    • 在C++中,我们仍然可以使用C中的方式,然而也可以使用“引用”方式:如果不想修改实参的值,我们使用const引用(就是“常量引用”)方式,这样就不可以通过引用修改被引用对象的值;如果想修改实参的值,则使用平常性的引用实参就可以了。
  2. 内联函数:通常inline限定符只用于那些非常小并且被频繁使用的函数。例如:

inline bool isNumber(char ch) {
    return ch>=’0’ && ch<=’9’?true:false;
}
类与对象
  1. 类与对象

C++编译器在生成程序时是将反映对象特征的数据成员分开,独立保存于程序的数据存储区域,而在程序的代码区仅保存一份成员函数。也就是说,物理上对象的数据成员和成员函数是分离的,并且成员函数是分享的。

程序在生成过程中,在类的成员函数形参表的最前端,编译器为其添加一个指向对象的指针,并命名该形参名为this,称为this指针。当通过对象调用成员函数时,系统将对象的地址传递给所调用成员函数的this指针,从而实现对象与成员函数的正确绑定。

类的对象在逻辑上是相互独立的。在物理上,对象的数据是独立的,不同的对象拥有不同的数据,但是,类的成员函数却只有一份,为类的所有对象共有。

  1. 如果有参的构造函数的所有形参都指定了默认值,那

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值