VC++学习笔记之一
最近在自学孙鑫老师的VC视频。自学的过程中有很多收获,俗话说“好记性不如烂笔头”,于是决定将学习中的重点内容、小技巧以及遇到的问题都记录下来。可能会比较乱,学完以后再重新作整理。
在C语言中,struct结构体中不能有函数,而在C++中,结构体可以包含函数。
要想使相同内容的class和struct完成相同功能,必须在class中加上“public:”
在C++中,结构体和类可以通用,结构体是一种特殊的类,区别在于访问控制方面,struct定义的类缺省所有成员为public;而class定义的类所有成员缺省为private。
类的实例和类的对象的概念是等同的,实例化一个对象=产生类的一个对象(实例)
在C++中,如果一个类没有构造函数,则C++不允许创建该类的对象,但是C++编译器会没有构造函数的类提供一个默认构造函数,它只负责创建对象,不带任何参数,不做任何初始化工作。
析构函数的作用是释放内存空间,不带参数且一个类中只能有一个(构造函数可有多个)
函数重载构成的条件:函数的参数类型、参数个数不同,才能构成函数的重载
This指针:是一个隐含的指针,它是指向对象本身,代表了对象的地址
类是一个抽象的概念,在程序中它并不占据实际内存空间,只有实例化的对象才会占据物理空间
类的继承访问特性:基类除了private成员不管用什么继承方式都不能被继承外,其余类型成员的继承特性采用“就低原则”,如子类以“private”方式继承基类的“public”成员,则子类对该成员的访问特性为“private”
函数的覆盖:是发生在父类与子类之间的,(而函数的重载是发生在一个类当中的)
“::”——作用域标识符,主要表示哪个函数是属于哪个类的,如A::a(); 表示函数a()是属于类A的
关于类型转换:两种类型之间能否转换主要看它们的内存模式是否匹配
多态性:(virtual)在基类的某一个函数前加上virtual后,如果子类中有相同函数就调用子类的,如果子类中没有相同函数就调用父类的
纯虚函数:virtual void fun()=0; 含有纯虚函数的类叫做“抽象类”,含有纯虚函数的类不能实例化一个对象,只能为派生类服务,而派生类要想实例化对象则必须实现纯虚函数
引用的概念:int a=5; int &b=a; 其中&b就是a的引用,相当于a的别名
一个函数是否实现并不是看“{”和“}”之间有没有内容,而是看有没有“{”和“}”
一般类的成员函数定义放在一个头文件中,实现放在一个源文件中
新建文件的一个便捷方法:1)在工程目录下新建几个空白txt文件;2)分别重命名为“xx.cpp”或“xx.h”,(功能键F2实现重命名);3)Project—>Add To Project—>Files。注意:工具—>文件夹选项—>查看 中“隐藏已知文件类型的扩展名”不选
在将一个类的定义分别放在头文件和源文件中时,如果头文件中为该类定义了虚函数,那么在源文件中实现虚函数时就不再加“virtual”了
包含头文件时,如果用双引号,C++编译器首先从当前目录开始查找;如果用尖括号,则从系统目录开始查找。(如不确定,统一用双引号)
避免头文件被重复包含可利用预编译指令# ifndef 使用方法如下:
# ifndef FISH_H_H
# define FISH_H_H
class Fish:public Animal
{
public:
Fish();
void breathe();
}
# endif