C++学习总结

1.C++编译过程

(1)预处理
a、将除源文件以外的内容全部加入到源文件中
b、删除掉注释
c、宏替换(#define num 100)
d、条件编译(#ifndef #define #endif)
(2)编译
a、检查用户编写的代码是否符合C++规范
b、将源代码翻译成汇编语言
(3)汇编
a、将汇编语言翻译成机器语言(二进制)
(4)链接
b、生成可执行文件

类与对象

类(class)
    描述现实世界中的事物,用C++进行编程的时候,通常是将现实世界中的事物用类来进行描述,类的关键字:class,描述一个人,特征:姓名、年龄、性别、肤色等等,行为:吃饭、睡觉、走路、跑步等等,类是一个泛指(抽象)的概念,不是特指某一个事物,简单的理解为没有实实在在存在于现实世界中(只是你脑海里一个概念)
用类描述事物的格式:
    class   类名(标识符名称)
    {
        //特征---变量
        //行为---函数
    };

对象
    对象是类的实例化(特指实际的例子),是特指的概念,例如:人(泛指的概念)-----对人进行实例化------张三(特指的概念)

举例:

class People
{
	//特征
	char name[5];//name用于描述姓名
	int age;//age用于描述年龄
	char sex;//sex用于描述性别
	char fuse;//fuse用于描述肤色
	//行为
	void eat()//吃饭
	{
        cout<<"这个人在吃饭"<<endl;
	}
	void sleep()//睡觉
	{
        cout<<name<<"在睡觉"<<endl;
	}
	
};

int main()
{
    //对象
    People  zhangsan;//在栈区实例化
    People * lisi  = new  People;//在堆区实例化
    zhangsan.eat();//访问People里的eat方法
    lisi->sleep();//访问People里的eat方法
}

构造函数
    构造函数是一种特殊的函数,它实质还是称为函数,如果用户没有显示的书写构造函数,那么编译器会帮用户自动的生成了一个默认的构造函数,反之,那么编译器就不会自动生成默认的构造函数
作用:就是为了初始化类的成员变量
格式:
    类名 (参数列表)
    {
        //代码块---用于初始化类的成员变量
    }

  People (/*参数列表*/)
    {
        cout << "人们"<<endl;
    }

如何调用构造函数?
a、构造函数的显示调用
格式:
    类名 对象名(构造函数参数列表);//这时候就显示的调用类的构造函数
例如:

int main()
{
        People people();

总结:构造函数与普通函数的区别
不同点:
a、普通函数前有返回值类型,而构造函数前没有返回值
b、普通函数后面没有初始化列表,而构造函数后有初始化列表
c、普通函数调用的时候以显式调用的方式,而构造函数不仅可以显示的调用还可以隐式的调用
相同点:
d、都可以带参数或者是不带参数
e、都可以发生重载

析构函数
    C++里的析构函数也是一种特殊的函数,它实质也是函数,如果用户没有显示的书写析构函数,那么编译器会自动帮用户生成一个默认的隐藏的析构函数,反之,那么编译器就不会帮用户生成一个析构函数。
作用:释放空间
格式:
    ~类名 ()
    {
        //代码块
    }

~Test1()//析构函数
	{
		cout << "析构函数" << endl;
	}

总结:
a、析构函数不能带参数
b、类体里面只允许有一个析构函数(析构函数不能发生重载)
c、析构函数前没有返回值

友元
    目的:给类的外部提供一个访问类的私有成员的接口
关键字:friend,用关键字来声明友元函数和友元类
(1)友元函数
    C++提供了友元函数就可以通过友元函数访问到类的私有成员,C++规定是友元函数声明在类里,就表示该函数是该类的友元,那么就可以通过友元函数访问类的私有成员,友元函数的定义放置在类的外部。
声明格式(在类里声明):
    friend 返回值类型  函数名(参数列表);//友元函数的声明
定义(在类外定义):
    返回值类型  函数名(参数列表)
    {
        //函数体
    }


重载、重写、隐藏(覆盖)
(1)重载
    一般是发生在函数中,C++也支持运算符重载
解释:
    C++里的函数名相同、函数的参数个数、类型、顺序不同,可以发生重载(函数重载)
例如:
  

  void function()
    {

    }
    void function(int)
    {

    }
    void function(char)
    {

    }
    void function(int , char)
    {

    }
    void function(char , int)
    {

    }


(2)重写
    就是将原来函数重新复制一份(函数的返回值、函数名、参数个数、类型、顺序都相同)
例如:

    void funiton()
    {

    }
    void funiton()
    {

    }


(3)隐藏(覆盖)
    就是将原来函数(变量)重新复制一份,就将原来的函数(变量)覆盖(隐藏),隐藏一般用的最多的是具有继承关系的两个类中.
 

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值