码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 面向对象高级开发

时间:2020-02-13 15:13:48      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:开发   之间   多重   技术   类型   str   line   members   内联   

1. Object Based(基于对象) vs. Object Oriented(面向对象)

Object Based: 面对的是单一class的设计;

Object Oriented:面对的是多重classes的设计,class 和 class 之间的关系。

 

classes 的两个经典分类:

  • class without pointer members -- complex
  • class with pointer members -- string

 

2. Header (头文件)

  2.1 防卫式声明

技术图片

 

  2.2 把 complex 的实部和虚部写成模板类

技术图片

 

 

  2.3 inline

inline 关键字是对编译器的建议。建议把某个函数定义为内联函数。实际上,是否定义为内联函数,由编译器决定。

定义在类内的函数,都是 “提议” 为内联函数。

 

  2.4 访问级别

所有数据成员都应该是private;

供外部使用的函数成员都应该是public,只供类内使用的函数成员可以是private;

 

  2.5 构造函数

complex (double r = 0, double i = 0)
    : re (r), im (i)    // initialization list(初值列,初始值)
{}
complex (double r = 0, double i = 0) {
    re =  r;
    im = i;        
}

上述是 2 种形式的构造函数,其结果都是对 re 和 im 进行赋值。但是,使用 initialization list 的代码效率更高,更彰显编程素养

 

  2.6 不需要析构函数

complex 类没有指针成员,因此不必使用析构函数。

 

  2.7 构造函数可以有很多个 -- overloading

下图所示,由于构造函数 (1) 的形参全部具有默认值,所以重载函数 (2) 会造成调用混乱。

而 real() 函数,编译器根据其返回值类型,形参类型和数量,定义了一个独一无二的函数名称(右下角所示)。 技术图片

 

 

  2.8 构造函数为private权限

构造函数为private,即不允许外界创建对象。

举例子,一个设计模式,singleton,只允许该类创建一个对象。通过类内的静态函数创建对象。

技术图片

 

C++ 面向对象高级开发

标签:开发   之间   多重   技术   类型   str   line   members   内联   

原文地址:https://www.cnblogs.com/gdut-gordon/p/12303279.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!