本帖最后由 鸦领主 于 2021-1-15 16:39 编辑
c++函数头用的是#include<iostream>
1.bool型变量:一个字节变量(和char一样大小)一般用于条件判断
缺省赋值给true(1)或则false(0)
bool<==>char,和char类型差不多一个样
2.引用型变量:让新申请的变量挂在原有同类型的变量的内存地址上
int i=10; int i=10;int &j=i; 和指针也差不多→ int *p=&i;
j=-1; *p=-1;
那么&j就是引用变量了,i就称为来源变量,必须初始化,挂在现有的同类型的变量上
它们俩个的内存地址一定是相同的
如果j=-1的,i也会变成-1,如果i=0,j也会变成0
3.命名空间
代码数量庞大,由大量程序员编写的代码出现了重名函数,重名全局变量
那么定义一个命名空间,就不会出现重名函数了
namespace ZS //这个叫做命名空间
{
函数
函数
}
#include<iostream>
namespace ZS //这个叫做命名空间
{
bool spp()
{
return true;
}
}
namespace Yu
{
bool spp()
{
return false;
}
}
bool spp() //全局区有一个函数
{
return false;
}
using namespace Yu; //在这里打开一下Yu的外壳,在调用Yu里面的函数就不用写Yu::
int main()
{
bool b = ZS::spp(); //调用ZS空间里面的函数
b = Yu::spp();//调用Yu空间里面的函数
b = spp();//调用的函数是Yu里面的
//全局区有一个函数和打开外壳的重名了
b = ::spp();//域名为空则调用的是全局区的,那么调用命名空间里面的
b = Yu::spp();//只能前面在加上域名了
return 0;
}
4.C++输入输出
#include<iostream>
using namespace std; //std是系统的命名空间,调用里面的函数前面就不用在加std::
int main()
{
double i,n;
cin >> i >> n;//内部其实取了地址
cout << "c++打印方式" << endl << i << "+" << n << "="<<i+n;
return 0;
}
cin是输入函数
cout是输出函数也就是打印,endl相当于换行符,作用是换行
(这样的好处在于不用区分类型,不用再写%d,%s之类的)
。
5.重载函数:函数名字相同,但是参数列表不同(类型和个数不完全相同)
c++支持重载函数,c语言不可以有相同名字的函数
递归函数c\c++都支持
6.申请堆空间
new和delete代替了malloc和free,用起来更方便了
c语言中申请一个堆空间:int *p=(int*)malloc(sizeof(int)) 清除:free(p)
而在c++中:int*p=new int; 清除delete p
数组:int*p=new int[10]; 清除delete []p
7.内联函数inline
代替了c语言的宏定义函数
编译时是按宏定义函数一样的处理
//可以替换一些简单的语句
inline int max(int a, int b)
{
return a > b ? a : b; == #definemax(a,b) a>b?a:b//宏定义函数
}
8.C++类成员函数
在C++中结构体中可以写函数,而c语言不能
#include<iostream>
using namespace std;
struct Time
{
int s;
int f;
int m;
void sj(int i, int n, int t)
{
s = i;
f = n;
m = t;
}
void print()
{
cout << s << ":" << f << ":" << m<<endl;
}
};
int main()
{
Time s1, s2;
s1.sj(12, 00, 00); //可以这样直接调用成员函数
s2.sj(6, 15, 35);
s1.print();
s2.print();
return 0;
}
把它在c语言中翻译过来
#include<stdio.h>
struct Time
{
int s;
int f;
int m;
};
void sj(struct Time *p,int i, int n, int t)//有一个隐藏的结构体指针
{
p->s = i;
p->f = n;
p->m = t;
}
void print(struct Time* p)
{
printf("%d:%d:%d", p->s, p->f, p->m);
}
int main()
{
struct Time s1, s2;
sj(&s1,12, 00, 00);//将结构体对象的地址带进去
sj(&s2,6, 15, 35);
print(&s1);
print(&s2);
return 0;
}
。
9.默认参数
int add(int i,int n=10,int t=0)//后面加上等于0,调用函数的时候这个参数可以不写默认为0
{ //后面加上等于10,调用函数的时候这个参数可以不写默认为10
return i+n+t; //必须从右到左的设置默认值,不能中间设置了而右边不设置
}
add(15,5,10)//等于30
add(15)//等于25,有俩个默认值
10.类权限管理:管理冒号以下的成员变量和成员函数
private:私有权限的成员变量和成员函数,只限于本类中调用
public:共有权限的成员变量和成员函数,类内和类外都可以调用
class和struct在编译过程是没有什么区别的,class缺省权限是私有的,struct是共有的 |