C++常见问题(二)——虚函数、类与结构、引用与值传递

一 文件输入输出的方式 C++定义了ifsteam、ofstream和fstream 3种类型以用来支持文件的输入输出。

二 异常 异常就是程序运行时出现的不正常,可能会导致系统无法正常运行甚至停止运行等严重的情况。 异常处理的方法包括两个方面: (1)throw表达式,错误检测部分使用这种表达式来说明遇到了不可处理的错误,可以说,throw引发了异常条件。 (2)try块,错误处理部分使用它来处理异常。

try       //功能代码
{
    program-statements
}
catch (exception-specifier) //捕获异常
{
    handler-statements  //处理语句
}
catch (exception-specifier)
{
    Throw;  //抛出异常
}

三 宏定义 宏定义的语法格式: #define <标识符><字符串>,其中的标识符就是所谓的符号常量,也称为”宏名”。预处理工作也叫宏展开。宏定义不占用内存和编译时间。

#define A_TESTING_MACRO(n) printf("a testing macro with a int argument n=%d !\n",n)

四 存储空间 使用new和delete来分配和释放存储空间。 使用方式:指针变量=new 数据类型;new使用后处理的三个事情,计算指定数据类型需要的内存空间大小;正确的指针类型;分配内存。

int* p;
p = new int;   //指针p直接指向由new分配而来的新内存空间
//p中仍然是存储了一个变量的地址,但新分配的内存空间,像是一个“临时建筑物”
*p = 100;
cout << *p <<endl;
delete p;     //释放内存空间
system("PAUSE");

五 虚函数与纯虚函数 虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public,在基类的类定义中定义虚函数的形式为:

virtual 函数返回值类型 虚函数名(形参表)
{
    函数体
}

纯虚函数是一种特殊的虚函数,一般格式:

class <name>
{
    virtual <type><function name>(<参数表>)=0;
}

六 引用与值传递的区别 值传递将要传递的值作为一个副本传递,在函数调用时,实参把它的值传递给对应的形参,方法执行中实参的值不会发生改变。

void Func2(int x)
{
    x = x + 10;
}
int n = 0;
Func2(n);
cout<<"n="<<n<<endl;  //输出结果为n = 0
void Func2(int &x)
{
    x = x + 10;
}
int n = 0;
Func2(n);             //引用传递
cout<<"n="<<n<<endl;  //输出结果为n = 10

七 类和结构有什么区别 类定义的一般形式:

class Name
{
    public:
    类的共有接口
    private:
    私有的成员函数
    私有的数据成员定义
}

结构定义的一般形式如下:

struct test
{
    float a;
    int b;
};

成员变量访问:通过声明private、protect和public3种访问权限来对成员变量进行访问控制的。 形参实参的区别:形参是函数定义或者声明时的函数形式参数,形参表制定了函数参数的个数和数据类型,实参是函数调用时传递给函数的参数,传递时要与形参一一对应。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT可乐

Java中的增强 for 循环 foreach

  foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理...

1779
来自专栏用户2442861的专栏

java+内存分配及变量存储位置的区别

Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细...

351
来自专栏Java帮帮-微信公众号-技术文章全总结

14.Java集合案例

Java 实例 - 数组转集合 以下实例演示了使用 Java Util 类的 Arrays.asList(name) 方法将数组转换为集合: ArrayToC...

2927
来自专栏闻道于事

Java之集合初探(一)

一、集合概述、区别 集合是一种容器,数组也是一种容器 在Java编程中,装各种各样的对象(引用类型)的叫做容器。 为什么出现集合类? 面向对象语言对事物的体现都...

2297
来自专栏服务端技术杂谈

map/reduce的先祖归并排序

归并排序是利用分治的思想进行排序的策略。 分:通过递归将一个大的数据集进行递归分割,直到只有两个元素进行比较。 治:将分的阶段的分割单元进行合并。 分 ? 可以...

2644
来自专栏Linux驱动

23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数  上章链接: 22.C++- 继承与组合,protected访问级别

继承方式 继承方式位于定义子类的”:”后面,比如: class Line : public Object //继承方式是public {...

3269
来自专栏好好学java的技术栈

Java基础提升篇:理解String 及 String.intern() 在实际中的应用

1212
来自专栏用户3030674的专栏

java 集合框架(List操作)

/*list 基本操作 * * List a=new List(); * 增 * a.add(index,element);按指定位置添加,其余元素...

491
来自专栏有趣的Python

py编程技巧-1.4-如何根据字典中值的大小对于字典中的项排序

实际案例: 某班英语成绩以字典形式存储为{'mtianyan',100,'tudou':'100','shabi':59} 根据成绩高低计算学生排名 解决...

3016
来自专栏Java帮帮-微信公众号-技术文章全总结

String中的null,以及String s;等区别详解

1、判断一个引用类型数据是否null。 用==来判断。 2、释放内存,让一个非null的引用类型变量指向null。这样这个对象就不再被任何对象应用了。等待JVM...

3324

扫码关注云+社区