C++基础知识汇总

来源:互联网 发布:按键精灵创建js对象 编辑:程序博客网 时间:2024/06/13 06:18

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
原创粉丝点击