学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

670

积分

1

好友

36

主题
发表于 2021-1-15 16:05:49 | 查看: 4218| 回复: 1
本帖最后由 鸦领主 于 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是共有的
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
发表于 2021-1-16 18:50:50
已经进入到C++了

小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

GMT+8, 2024-4-20 13:01 , Processed in 0.150074 second(s), 47 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表