世嘉新人培训教材学习_第一章 _C++知识点复习

因为第一章为基础的C实现了推箱子的简单游戏,后面要使用到许多C++的知识,之前学习过,但是因为用的较少,这里在简单复习一下。加深理解,同时也知道了在学校学的知识点只是停留在基础的语法部分,要真的去理解才能取得进步。

一、命名空间

 一、为什么使用命名空间

 在C++应用程序中会出现同样的情况。例如,您可能正在编写一些具有名为xyz()函数的代码,并且还有另一个可用的库,它也具有相同的xyz()函数。现在编译器无法知道您在代码中引用的xyz()函数的哪个版本。

名称空间(namespace)被设计来克服这个困难,并被用作额外的信息来区分类似的函数、类、变量等等,它们在不同的库中具有相同的名称。使用名称空间,您可以定义定义名称的上下文。本质上,名称空间定义了一个范围。

C++命名空间的使用:

使用整个命名空间:using namespace name;
使用命名空间中的变量:using name::variable
使用默认命名空间中的变量:  ::variable

 例如:using namespace std;  该指令告诉编译器后续代码将使用指定命名空间  std 中的东西。

二、模板

//类模板:
template<typename 类型参数1 , typename 类型参数2 , …> 
class 类名{
    //TODO:
};
//函数模板
template<typename T1,typename T1, ...> 
返回值类型 模板名(形参列表){
	//函数体
}

三、构造函数和析构函数

类的构造函数是一种特殊的函数,在创建一个新的对象时调用。(默认构造函数就是无参构造函数)

类的析构函数也是一种特殊的函数,对象消亡时被调用。

拷贝(复制)构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。只有一个参数,为本类的引用

默认情况下,C++编译器会至少给类加三个函数(默认构造函数,复制构造函数,析构函数)。

①若写了有参构造函数,则不会提供无参构造函数,会有拷贝构造函数。

②若写了拷贝构造函数,则不会提供其它构造函数。

 

四、const

1、const修饰变量 const修饰变量,可以使变量具有常属性,也就是该变量在以后的使用中其值都不能进行改变

(const修饰的变量要进行初始化。)

2、const和指针

int const* p;//指针p本身可以修改,但是p指向的内容不可以修改
const int*p;//指针p本身可以修改,但是p指向的内容不可以修改
            // const 和变量类型 int 可以互换位置,二者是等价的
int *const p;//指针p本身不能修改,但是p指向的内容可以被修改
int const *const p;//指针p本身和p指向的内容都不可以修改
​
const int *const p;//指针p本身和p指向的内容都不可以修改
简记:(const放在*左边)左定值,右定向

3、保护函数参数不被改变 用const修饰函数的参数,可以保证该参数的值在函数内部不被改变。

一般情况下,如果参数是按值传递的,那么函数本来就无法改变参数值。但如果按指针传递或按引用传递,则const是有用的。

4、const修饰函数返回值 const修饰函数的返回值,表示函数的返回值是常量,不可更改。该返回值只能被赋给加const修饰的同类型变量。一般在类中使用,不常用。

const int fun(){//...}

5、const修饰类成员函数 const可以修饰类成员函数,防止类成员函数中除了static成员之外的其他成员(变量)被修改。

class T{
public :
    void fun()const{
        a = 20;//错误,不可以修改非static的值
        b = 10;
    }
private:
    int a;
    static int b;
};
//注意:const 关键字不能与 static 关键字同时使用,因为 static 关键字修饰静态成员函数,静态成员函数不含有 this 指针,即不能实例化,const 成员函数必须具体到某一实例。

小例子无法体现const的好处,当程序规模变大时就会体现出这种安全机制的重要性了。在写函数时只要能加const就尽量加上。

五、delete

T *p = new T;  
delete p;//释放
T *p =new T[N];//动态分配一个任意大小的数组:
delete[] p;//释放  ,如果采用delete p;会导致动态分配的数组没有被完全释放。

因为编译器无法从指针上判断所指的是否为数组,需要人来告知。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值