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/欢迎大家访问,评论!