C++学习笔记-基本语法20210423

1.数组的定义
type arrayName [arraySize];
对比Java中的定义type[arraySize]arrayName;c++中是先声明类型,变量名,数组长度。

2.数组初始化
type arrayName [arraySize]={xxx,yyy,...}
对比Java中的定义为type[]arrayName =new type[]{xxx,yyy,...}

3.字符串
C++中字符串表现形式为char site[7] = {'f', 'o', 'x', 'h', 'o', 'm', 'e','\0'},字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此数组的长度需要额外的进行+1,也可写作以下形式char site[] = "foxhome";

4.字符串基本方法

函数名 作用
strcpy(s1, s2) 复制字符串 s2 到字符串 s1
strcat(s1, s2) 连接字符串 s2 到字符串 s1 的末尾,连接字符串也可以用 + 号
strlen(s1) 返回字符串 s1 的长度
strcmp(s1, s2) 如果 s1 和 s2 是相同的,则返回 0
strchr(s1, ch) 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置
strstr(s1, s2) 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置

5.String 类
将字符封装成了对象,拥有了一些封装方法。

6.指针
指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。定义格式如下:
type *varName;列如int *m;简单的示例如下

    //定义变量
    string str = "foxhoem.top";
    //声明指针
    string *m;
    //将变量存储地址赋值给指针
    m = &str;
    //*m表示从指针的内存地址取值
    cout << "strcmp:" << *m << endl;

7.引用
type &varName=X;引用变量是一个别名,与指针不同的是它相当与一个与一个变量名等价,可以笼统的理解为给变量名再取了一个名字,但他们均指向了同一个空间。列如

    //定义变量
    string str = "foxhoem.top";
    //声明指针
    string &m = str;
    m = "www.foxhome.top";
    cout << str << endl;

这里会打印出www.foxhome.top

8.结构体
结构体用于描述数据结构,而非对象方法,与Java中的class相比数据跟为简单。

struct type_name {
member_type1 member_name1;
member_type2 member_name2;
} object_names;

例如

struct Info
{
    long time;
    char msg[50];
};

int main(int argc, char *argv[])
{
    Info into;
    into.time = 11.90l;
    strcpy(into.msg, "my foxhome");
    cout << into.time << endl;
    cout << into.msg << endl;
    return 0;
}

9.类
概念与Java类似,定义的方式不一致,示例如下:

//关键字 类名
class Info
{
public: //变量修饰符 private,public proteced
    int index;
    string msg;
    long time;
    //方法声明
    string getMsg(void);
    void set(string msg, long time);
};

void Info::set(string m, long t)
{
    msg = m;
    time = t;
}
string Info::getMsg()
{
    return msg;
}

int main(int argc, char *argv[])
{
    Info info;
    info.index = 15;
    string m = "hshshs";
    info.set(m, 178l);
    cout << info.getMsg() << endl;
    return 0;
}

10.类继承
概念与Java近乎一致,书写方式有所不同。名词上喜欢称基类,派生类,而Java中喜欢称为父类子类,可能原因为c++中存在多集成概念,不能简单的理解子父关系。结构如下:

class 派生类明: 权限修饰符 基类名

权限修饰符可为public,protected,private默认为private,权限修饰符作用如下

公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。

保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。

私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。

11.多继承
代码结构class <派生类名>:权限修饰符 基类名,权限修饰符 基类名2,…

12.接口,抽象类,纯虚函数
与Java相比该C++中只有虚函数的定义,定义方法如下virtual 返回值 方法名() = 0;基类定义虚函数之后派生类必须实现对纯虚函数进行实现。

发表评论

CAPTCHAis initialing...