【C++】常见关键字的使用场景及用法

自动变量类型

int,float,double,short,char,bool(参考基本数据长度格式化输出

 

STL数据类型

string:字符串操作,可以通过下标访问某个字符。

listsetmap:都有点像链表,不可以通过下标直接访问。

vector:数组功能的扩展,可以通过下标来访问对象。

 

include和extern

include:#include <stdio.h>包含头文件,就相当于把这个头文件中所有内容都copy到源文件中

extern:从某个文件中导入某个函数或变量

 

struct和union

struct:结构体,每个变量都会被分配不同的内存空间。

union:共享内存,就是几个变量都能访问同一段内存。

 

const和static

const:他是封禁的作用,主要分封禁地址和封禁星号。

static:它修饰的变量或函数表明只能被初始化一次,然后其他所有人都共用这段内存的内容。

 

define和typedef的异同

define:#define INTPTR1 int* 没什么坑,但一般用于定义别名和常量

typedef:typedef int* INTPTR2有很多坑,特别是指针的别名时,别想当然,最好自己测试下。

 

class

用于申明一个类,下面是类中出现的关键字:

(1)private,只能自己访问

(2)protected,子类可以访问

(3)public,所有可以访问

(4)friend,你是我朋友,你能访问我所有的

(5)单冒号:(a)继承;(b)初始化

(6)父类指针指向子类对象:虽然父类和子类都被编译,但父类指针只能访问父类自己的内容,子类你可访问不了。

父类指针最多只能调用子类对父类中重写的函数:但是你如果想访问使用父类指针来访问子类中的函数,可以在父类中声明与子类命名参数完全相同的函数,并在函数前使用virtual修饰符,那么就可以调用子类中被重写的函数了。

(7)构造:类中使用,一般不需要自己定义,但如果有功能需要实现就可以自定义。

(8)析构:类中使用,一般不需要自己定义,但如果在类中使用了new或malloc来申请堆内存,那么在析构的时候一定要delete或free。(new,delete;malloc,free这2组都是用来申请堆内存)

析构有时需要加virtual:因为如果你定义了一个父类指针指向子类对象,那么在析构的时候你改调用子类的析构函数还是父类的析构函数?不管调用哪个都有可能造成内存释放不完全。所以就需要在父类的析构函数前加上virtual修饰符,这样他就会将父类和子类都析构。

(9)纯虚函数(virtual):被用来规范接口的,就是在一个纯虚类中只申明实现功能,其他类自己去实现这个功能,最后通过纯虚类将实现功能整合到一起。

(10)拷贝构造函数:拷贝构造使用格式固定,一般不用自己写,除非需要拷贝指针。

 

双冒号

作用域的限定,具体可分为

(1)::a,前面直接加双冒号表示全局变量;

(2)类的成员函数或成员变量的访问

class Mytest()
{
public:
    void Test();
};

void Mytest::Test()
{
    printf("Test.\n");
}

(3)命名空间(涉及关键字namespace和using),比如std::cout等

(4)静态类型函数和类型变量的访问

class Mytest()
{
public:
    static int a;
}

Mytest::a = 3;

 

函数模板和类模板

函数模板

template <typename T>
T findmax (T arr[], int len)
{
    T val = arr[0];
    ...
}

类模板

template <typename T>
class MyTest()
{
public:
    T Sum(T a, T b)
    {
        return a+b;
    }
};

 

声明类在被使用在定义之前

这个声明,有时称为前向声明(forward declaraton),在声明之后、定义之前,类A是一个不完全类型(incompete type),即已知A是一个类型,但不知道包含哪些成员。
不完全类型(incomplete type)只能以有限方式使用。不能定义该类型的对象。不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值