C++详解

基本形式如下:

class 类名
{
public:
//行为或属性 
protected:
//行为或属性
private:
//行为或属性
};

实例化两种方式

  • 方式1: 类名 对象名(参数,..)
  • 方式2: 类名 *指针名 = new 类名(参数,..)
  • new创建类对象需要指针接收,一处初始化,多处使用
  • new创建类对象使用完需delete销毁

C++中:

Student  student(20) ;  //这里student是引用 对象分配在 栈空间中,这里只是我的理解

Student *student = new  Student(20);  //这里student是指针,new Student(20)是分配在堆内存空间的

但是在Java中

Student  student(20) ;  //注意:java中没有这样实例化对象的, 要想得到一个对象 必须要new出来.

Student student ; //这个只是定义了一个引用 ,没有指向任何对象

Student student = new Student(20);   //定义了一个引用,指向堆内存中的student对象

命名空间

定义

在C语言中只有一个全局作用域,C++中提出了命名空间的概念,命名空间将全局作用域分成不同的部分,不同命名空间中的标识符可以同名而不会发生冲突,全局作用域也叫默认命名空间。

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

namespace class struct 区别

  • namespace 是命名空间,仅仅是防止重名
  • struct 定义的是结构体,是C语言中的方法,C++兼容它。但它不是面像对像元素。可以完全用class代替。
  • 在C++中,通常情况下,class基本上可以代替namespace和struct。

关键字

final

final关键字来限制类不能被继承,或者虚函数不能被重写。

class A final {
virtual void hehe() final;
};

override

override保留字表示当前函数重写了基类的虚函数

目的:

  • 在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定义的);
  • 强制编译器检查某个函数是否重写基类虚函数,如果没有则报错。

引用,引用作为函数参数,引用作为返回值

  • 对一个数据建立一个“引用”,他的作用是为一个变量起一个别名。这是C++对C语言的一个重要补充。
  • &在数据类型后,为引用声明符,在数据类型前为取地址符。
  • 声明一个引用时,必须同时使之初始化,即声明它代表哪一个变量
  • 在声明一个引用后,不能再使之作为另一变量的引用。
  • 不能建立引用数组。
  • 引用作为函数参数声明时不进行初始化,当实参传给形参引用的时候,只不过是c++编译器帮我们程序员手工取了一个实参地址,传给了形参引用(常量指针)。
  • 函数返回引用类型时,没有复制返回值,相反,返回的是对象本身。
  • 千万不要返回局部对象的引用!千万不要返回指向局部对象的指针!因为当函数结束时,局部对象被释放,返回的指针就变成了不再存在的对象的悬垂指针。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×