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/欢迎大家访问,评论!
- C语言基础知识汇总
- 基础知识汇总
- 摄影基础知识汇总
- 手机基础知识汇总
- Java基础知识部分汇总
- Java基础知识部分汇总
- Java基础知识部分汇总
- C#基础知识汇总
- C#基础知识汇总
- Java基础知识部分汇总
- Java基础知识部分汇总
- 交叉编译基础知识汇总
- JAVA基础知识汇总
- 云计算基础知识汇总
- JDBC基础知识汇总
- 网络编程基础知识汇总
- 网络编程基础知识汇总
- 家具基础知识汇总
- NRF24L01的使用
- H5历史API之pushstate
- 最长公共子序列
- hdu 5916 Harmonic Value Description
- OC直接打印数组,数组元素显示中文的问题 [复制链接]
- C++基础知识汇总
- 留言板首页显示
- 机顶盒相关名词阐释
- 线程与进程的区别
- java字节流字符流IO操作
- 洛谷 P1315 [NOIP2011 D2T3] 观光公交
- Android之内存泄露与内存管理
- 访问历史API
- 【JZOJ 4809】【NOIP2016提高组 五校联考1】挖金矿