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 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

Python3.6学习笔记(三)

面向对象编程 Object Oriented Programming 简称 OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作...

602
来自专栏cnblogs

JAVAScript柯里化、部分应用参数终极理解

一、柯里化 在定义柯里化、部分应用参数的概念前,首先必须对闭包有深入的了解和定义,闭包一句话说清楚:函数返回值为函数。 柯里化的定义:将多参函数分解为按步骤接受...

1888
来自专栏zingpLiu

面向对象(三)【类的特殊成员及高级特性】

前面两篇文章介绍了类与对象的基本概念和类中的一些成员,本篇主要介绍类和对象的特殊成员及一些高级特性。

773
来自专栏思考的代码世界

Python编程从入门到实践之函数|第8天

函数是带名字的代码块,用于完 成具体的工作。要执行函数定义的特定任务,可调用该函数。需要在程序中多次 执行同一项任务时,你无需反复编写完成该任务的代码,而只需调...

3427
来自专栏cs

C#3.0面向对象程序设计一

文章首发 http://www.imooc.com/article/22105 我还在简书。。。。。。 面向对象三大特征,继承,封装,多态 1.0 封...

2806
来自专栏抠抠空间

函数 (一) 基础

一、函数的作用 函数可以让我们代码结构更清晰,而且避免了代码的重复,冗余,使一段代码或者功能可以反复的被调用,大大提高了开发效率 二、函数的定义 def 函数名...

2776
来自专栏新工科课程建设探讨——以能源与动力工程专业为例

2.2.1 js基本语法

1. var b=true;//定义布尔变量b,并赋值为true,js注释与C/C++完全相同,此处不详述

922
来自专栏noteless

[二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口

        比如接收双参数的,有 Bi 前缀, 比如 BiConsumer<T,U>, BiFunction<T,U,R> ;

1033
来自专栏Java技术栈

switch case 支持的 6 种数据类型!

1484
来自专栏个人随笔

房上的猫:带参数的方法

一.定义带参方法  语法: <访问修饰符>返回值类型<方法名>(<参数列表>){    //方法的主体   }   解析:    (1)<访问修饰符>指该...

31210

扫码关注云+社区