C++学习笔记

#include<iostream>头文件
using namespace std; 命名空间,为了避免两个程序员使用相同的名字造成冲突
cin>> 输入
cout<< 输出

c++可以自动识别数据类型
引用:类型名+运算符(&)+名字
void 不能进行引用,void&a =3;//error
不能建立数组的引用,
    只有局部变量遇到{}才会消亡
    内联函数inline
    重载函数
    递归函数
---------------------------------mydaynote---------------------------
一、引用
1、类型+&+名字:如引用一个整形变量
    int someInt;
    int& rInt = someInt;
    三种写法:int& rint;
              int &rInt;
              int & rInt;
2、引用只有声明没有定义,在声明时必须被初始化
指针变量的引用:int *a; int* &p=a;//int*的引用p初始化为a
                int b; p=&b;
void& a=3;//error
不能建立引用的数组:
    int a[10];
    int& ra[10]=a;//error
引用不能用类型来初始化:int ra=int//error
int& ri=NULL;//error
二、内联函数:主要是解决程序的运行效率
1、内联函数必须在被调用之前被声明或定义
2、内联函数只适合1~5行的小函数

三、重载函数
返回类型 参数个数 参数类型 参数顺序
四、递归调用
五、默认参数的函数:默认值可以是全局变量全局常量或者一个函数,但是不可以是局部变量

---------------------------------day02--------------------------------
    1 结构体
    private 只在类域里可以使用 public结构体以外的可以使用
    结构体内第一个变量没写访问修饰符class默认是private  struct 默认是public,
#include<iostream>
    using namespace std;
void setnumber(int num)//不在同一个域内的同名函数,此函数在全局区
{
    cout<<"setnumber int"<<endl;
}
class Person
{
    private:
        int number;
    public:
        void setnumber(int num)
        {
            cout<<"setnumber int"<<endl;
        }
        void setnumber(double num)
        {
            cout<<"setnumber double"<<endl;
        }
};
int main(int argc,char **argv)
{
    Person a;
    a.setnumber(10.0);//同一个域内的同名函数但是形参类型不一样
        setnumber(1);//调用全局区的函数
    return 0;
}
总结:
面向对象的第一特性就是封装性
类的成员函数默认是内联函数
经过封装对于外部只有类提供的接口可以使用
成员变量在遇到被屏蔽的时候可以用类名加::来访问
对象和类的联系和区别:(人类和自己),每个人都长得不一样
类中访问关键字:private public
封装的优点:
重用 具有安全性 不必关心具体的实现

m_iHour

一、构造函数:分配完空间编译器自动调用的函数,比手动调用函数快,没有返回值,其名字和类的名字一样;
所有的数组只能调用无参的构造函数;
二、析构函数:对象消亡前调用一次函数,是特殊的成员函数,没有返回类型,没有参数,函数名为:在构造函数前加 ~,也称为逆构造函数
先构造后析构,后构造先析构
一般不要手动调用构造函数和析构函数,他们都是编译器自动调用的
-----------------------------------mydaynote--------------------------------------
一、类
1、关键字:class、struct
    class默认为private、struct默认为public
    在类中说明的要么是数据成员要么是成员函数
2、在类中定义的成员被默认为内联函数,在类中定义的成员函数switch语句不能使用
===========================================day03==============================
一、面向对象(oop)的程序设计
两个原则:抽象和分类
二、堆与拷贝构造函数
1、new delete 成对的使用,用malloc时在堆上分配一块内存空间但是不会调用构造函数和析构函数
2、使用堆的原因
a、直到运行时才知道需要多少对象空间
b、不知道对象的生存期到底有多长
c、直到运行时才知道一个对象需要多少内存空间
3、深拷贝 浅拷贝 临时对象 无名对象 二义性
三、
1、静态成员函数只能操作静态成员函数,普通成员函数即能操作静态也能操作非静态成员函数
2、友员函数
=====================================day04==========================
一、继承
public          protected        private
public            public            protected        不可访问
protected        protected        protected        不可访问
private            private            private            不可访问
1、私有继承(域外不可访问) 公有继承,protected保护:只有子类可以访问
2、域外只有公有继承才可以访问
3、子类拥有父类所具有的所有属性但子类不一定都能访问父类具有的属性,子类拥有的属性父类不一定具有,如果子类有而父类没有则父类不可直接访问子类的独有属性
4、子类的对象可以赋值给父类的对象,基类指针可以指向子类
5、公有继承子类和父类内存首地址一样
6、多态:基类的指针指向子类的对象才能体现出多态(public),基类里面加 virtual,跟着对象走
重载要在同一个类域才算重载
多态实现:虚函数 : 成员函数之前加上 virtual 关键字之后,就是虚成员函数
基类的别名作为子类对象的别名(引用)
总结:1、继承的目的是为了代码重用
2、多态的目的是为了接口重用
3、抽象类至少有一个纯虚函数
先虚继承在普通父继承再成员 再自己
======================================day05=========================================
一、重载
1、operator
2、?::,?:,*,->,.这五个操作符不能重载
左操作数返回引用右操作数返回值,前++为左操作符后++为右操作符
3、模版
template 模版,调用的时候类型会自适应
二、标准模版类
    容器 (container)
    迭代器 (iterator)
    算法(algorithms)
    函数对象(function object)
三、七种基本容器:
    向量(vector)
    双端队列(deque)
    列表(list)
    集合(set)
    多重集合(multiset)
    映射(map)
    多重映射(multimap)

    vector
=======================day06======================================
一、list
二、map关联容器
=====================================day07================================
一、输入输出流
cout是ostream(输出流)的一个对象
cin是istream(输入流)的一个对象,istream类中其他成员函数有:ignore、putback、peek
cout执行的时候从右向左执行,打印的时候从左向右打印
流操作算子:hex十六进制  oct八进制 dec十进制 setbase() 设置浮点数精度(precision、setprecision) 设置域宽width,用户自定义的流操作算子
二、文件操作
1、Ofstream写操作的文件类(输出,由ostream引申而来),ifstream读文件的操作类(输入,istream),fstream可同时读写操作的文件类(iostream)
2、文件打开模式
    ios::in 输入(读)模式打开文件ios::out 输出模式(写)打开文件
    ios::app 追加模式打开文件
    ios::trunc 若文件已经存在则清空文件的模式打开文件
    ios::binary 二进制方式打开文件
    例如:fstream file;
    file.open("exemple",ios::out);
3、文件关闭,通过调用成员函数close()来完成 如:file.close();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值