IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 侯捷-C++面向对象高级开发(上) 笔记02-04 -> 正文阅读

[C++知识库]侯捷-C++面向对象高级开发(上) 笔记02-04

侯捷C++面向对象高级开发

1、防卫式声明

用在头文件中

#ifndef  __头文件的大写名字__
#define __头文件的大写名字__

代码块

#endif

防卫式声明的作用是:防止由于同一个头文件被包含多次,而导致了重复定义。
在这里插入图片描述
– “Car.h”,代码如下(并没有添加防卫式声明):

// Car.h
class  Car
{
// ...
};

– “Person.h”,代码如下(包含了Car.h文件):

// Person.h
#include "Car.h"
class  Person
{
public :
     Car car;
};

– 在"main.cpp"中,我们同时include两个头文件:

// main.cpp
#include "Car.h"
#include "Person.h"
int  main( int  argc,  const  char  * argv[]) <br>{
     Person p;
}

此时,我们会发现编译出错:Redefinition of ‘Car’.

可是为什么会出现这样的情况呢?

我们需要知道,在预编译阶段,编译器会把.h文件展开,即main.cpp中的代码可以看做是:

class  Car
{
     // ...
};
 
class  Car
{
     // ...
};
 
class  Person
{
public :
     Car car;
};
 
int  main( int  argc,  const  char  * argv[]) {
     Person p;
}

此时class Car被包含两次,重复定义,出错。

2、内联函数,inline

内联函数效率更高

类内的函数本身就是inline函数,而类外的函数,我们可以在函数前面加上inline向编译器发出建议,让其变成inline函数。太过复杂的函数无法变成inline函数。
在这里插入图片描述
3、初始行和初始列,构造函数专业的写法,在构造函数参数后面使用

class A
{
public:
	A(int a = 0, int b = 0)
	:re(a),im(b)    //初始行,初始列,仅在构造函数
	{}
private:
	int re, im;
}

来直接初始化类内数据,比在函数内赋值,可以提高效率。

默认实参,如果默认实参后面必须也是默认实参

complex(double r=0,double i)   //错误,如果r和i互换位置,则正确

在这里插入图片描述
3、常量成员函数

如果成员函数不改变值,则应该用const进行修饰

double real () const {return  re ;}  

如果这里不加const

double real ()  {return  re ;}  

const complex c(2,1);
c.real();  //错误

因为这是一个常量类,但是类的成员函数不是const的,则调用会出错,相当于用一个非常量指针去操作常量指针的数据。

在这里插入图片描述
4、值传递和引用传递

一般都用引用传递,因为节省空间更有效率。

如果用引用,又不想更改值,则用常量引用

int b = 0;
const int & a = b;

在这里插入图片描述
5、友元函数

在类里声明友元函数,则非此类的成员函数,但属于友元函数,也能访问类里的private数据
在这里插入图片描述

6、 同一个类里的成员函数是友元函数、

都是complex类,c1的成员函数是c2的友元函数。
在这里插入图片描述
7、返回引用还是值

只有局部函数变量不能返回引用,因为其生存周期在函数执行完就结束了,其余的都可以返回引用。

在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 08:51:02  更:2021-08-28 08:51:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:17:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码