C++基础知识汇总

C++?++C?这是一个问题,国庆第四天,闲来无事,一直想看下C++,白天有空看了一下,晚上来整梳理一番.

- Hello,C++

# include<iostream> //引入头文件
using namespace std;//使用名称空间, 
int main(){
    //输出语句  std是C++封装了的类  ::表示调用类里面的静态函数或属性  cout输出函数 
    //std::cout<<"hello ,C++\n" ;
    cout<<"hello ,C++\n" ;
}

- 基本数据类型

# include<iostream>
using namespace std;//使用名称空间,

int main() {
    bool islike=false;  //bool类型值可以是true也可以是false,其实对应值是1和0 
    short s=10;
    int i=10;
    long l=10;
    float f=10.1;
    double d=10.22;
    long double ld=300;
    char c='c';
    wchar_t w='ha';
    cout<<"is like="<<islike<<"\n" ;
    cout<<"s="<<s<<"\n" ;
    cout<<"i="<<i<<"\n" ;
    cout<<"l="<<l<<"\n";
    cout<<"f="<<f<<"\n" ;
    cout<<"d="<<d<<"\n" ;
    cout<<"ld="<<ld<<"\n" ;
    cout<<"c="<<c<<"\n" ;
    cout<<"w="<<w<<"\n" ;
}

我们可以看到比C新增的数据类型bool,我感觉这只是在C的基础上简单的封装了下,因为我们打印true和false分别是1和0.

- &符号

在C中我们知道&有取地址符的使用方法,和与的位运算,在C++中多了一种引用的用法:其实这种引用就是把变量重新取了个小名,他们指向的地址是相同的.

# include<iostream>
using namespace std;

int main() {
    //&取地址符 
    int i=10;
    int* p=&i;

    cout<<"*p="<<*p<<"\n";
    cout<<"p="<<p<<"\n";
    //& 与运算符 
    int x=1;
    int y=2;
    int z=x&y;
    cout<<"z="<<z<<"\n";

    //引用
    int a=100;
    int& ref=a;
    cout<<"&ref="<<ref<<"\n"; 

    cout<<"&a="<<&a<<"\n"; 
    cout<<"&ref="<<&ref<<"\n"; 

    int* pref=&ref;
    *pref=10;
    cout<<"a="<<a<<"\n";    

}

这里写图片描述

- 常量

要注意的是在C++中修饰常量的关键字是const,这个关键字的用法类似于java中的final,被修饰的变量不能被修改.

# include<iostream>
using namespace std;

int main() {
    //  const常量的定义 被定义的常量不能被修改 
    const int FLAG=100;
    cout<<"FLAG="<<FLAG;

}

- 字符串

C++中字符串的关键字是string,注意开始是小写.

# include<iostream>
using namespace std;

int main() {
    string str="这是在C++里面的字符串!";
    cout<<"str="<<str; 
}

- for语句

# include<iostream>
using namespace std;

int main() {
    int sum=0;
for(int i=0;i<=100;i++){
    sum+=i;
}
cout<<"sum="<<sum;
}

看到和C的区别在哪里了吗?C中变量需要使用必须先在外面声明,而C++开始在需要的地方定义就可以了.其他语句的使用和C中没有什么差异,就不再赘述了.

- 集合

在C++中需要使用集合需要先引入头文件,当然在C++中还有其他类型的集合比如Lists,Maps等等,可以自行看STL(标准模板库)

#include<iostream>
#include<vector>
using namespace std; 
int main(){
    //集合 
    vector<char> ivec;
    for(int i = 0;i<10;i++){
            ivec.push_back(i+65);
            cout<<ivec[i]<<"\n";
    }

    cout<<"------------------------"<<"\n";

    //迭代器 
    vector<char>::iterator startIterator;
    startIterator = ivec.begin(); 
    //移除 第一个元素 
    ivec.erase(startIterator);


    for(int i = 0;i< ivec.size();i++){
           cout<<ivec[i]<<"\n";      
    } 
    //清空
    ivec.clear();

    cout<<"集合大小:"<<ivec.size()<<"\n"; 

    system("pause");
    }

需要注意的是对于集合的操作传入的的迭代器.下面是几种常用的集合的方法
这里写图片描述

- 访问修饰符

public的定义:所有范围都能访问;
protected的定义:类自身和派生类能访问(派生类对象对其基类对象部分中的protected成员的访问);
private的定义:类自身能访问;
这和java中的访问修饰符号作用一致.

- 类

既然是面向对象那么自然有类的概念.我们来看下C++中类的定义

# include<iostream>
using namespace std;
//类的定义
class Student {
    public://访问修饰符
        string name;//属性
        void say() {  //函数
            cout<<"my name is="<<name<<",my age ="<<age<<"岁\n";
        }
        Student() {//无参构造
            name="student" ;
        }
        Student(string _name) {//含参构造
            name=_name;
        }
    private://访问修饰符
        int age=10;
};

int main() {
    Student stu;//实例化了一个学生对象
    stu.name="huyuxin" ;
    stu.say();

    Student stu1;   //无参构造的调用
    stu1.say();

    Student stu2("xiaozheng");//含参构造的调用
    stu2.say();

//struct -->class    C++的new和java不一样,java返回的是类对象,而C++返回的是这个对象内存空间的首地址 -->指针接收
    Student* stu3=new Student(); //new 关键字的使用
    (*stu3).say();
    stu3->say();

    Student* stu4=new Student("xiaobai");
    stu4->say();    

}

我们可以发现和java中类的定义有一定的差别,但是也有相通之处,我们可以在上面看到四种对象的实例方法,在C++中也有new这个关键字,但是和java不同的是java返回的是类对象,而C++返回的是这个对象内存空间的首地址 –>指针接收

- static

对于静态函数和静态变量的声明在java中区别不大,需要注意的是静态函数的调用格式是类名::静态函数名(好像在C++没有方法的叫法,都是叫函数的,可能只是习惯问题)

# include<iostream>
#include<vector>
using namespace std;
//类的定义
class Student {
    public://访问修饰符
    const static int MAX=100;
    //静态函数 
        static void say(string content){
            cout<<content<<"\n";
        }
};

int main() {
    cout<<"静态常量:"<<Student::MAX<<"\n"; 
    //静态函数的调用  类名::函数 
  Student::say("just like this use");

}

- 继承

既然是面向对象编程那自然是少不了继承的概念,在C++中继承不需要extends关键字

# include<iostream>
#include<vector>
using namespace std;
//类的定义
class Supclass {
    public:
        int a;
        Supclass() {
            a=10;
            b=20;
            c=30;
        }
    protected:
        int b;
    private:
        int c;


};
class  Sonclass:public Supclass {
    public:
        void show_a() {
            cout<<"a="<<a<<"\n";
        }
        void show_b() {
            cout<<"b="<<b<<"\n";
        }
//      void show_c() {     //父类属性修饰为private子类无法访问 
//          cout<<"c="<<c<<"\n";
//      }

};

int main() {
    Sonclass sonclass;
    sonclass.show_a();
    sonclass.show_b();
}

需要注意的是,在C++中有三种继承方式:public继承,protected继承,private继承
这里写图片描述
在父类中修饰为private的方法和变量在子类是不可见得.

- 多继承

这是一个有趣的东西,为啥是有趣呢?因为可以多继承,一个儿子就可以有多个爸爸了,
在java中是只能单继承的但是可以多实现(implement)

# include<iostream>
#include<vector>
using namespace std;
//类的定义
class SupclassA{
    public:
        int a;
        SupclassA() {
            a=10;
        }
};
class SupclassB{
    public:
        int b;
        SupclassB() {
            b=100;
        }
};
class Sonclass:public SupclassA,public SupclassB{
    public:
        void show(){
            cout<<"show in Sonclass :A.a="<<a<<";B.b="<<b<<";";
        }
};
int main() {
    Sonclass sonclass;
    sonclass.show();
}

我的博客网站http://huyuxin.top/欢迎大家访问,评论!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值