关于类容易模糊的三个知识点
来源:互联网 发布:阿波波英语软件下载 编辑:程序博客网 时间:2024/05/29 08:21
本次博客 主要复习三个模糊的知识点。其中
> 构造函数与析构函数的定义、声明与使用;
> this指针作为隐含参数以及返回*this对象本身;
> 在类中声明常量的两种方式。
本博客参考自:http://blog.csdn.net/budf01/article/details/72972727,非常感谢!
一、构造函数与析构函数
构造函数原型与定义:
类构造函数用来构造新对象,并将值赋给它们的数据成员。
构造函数的名称与类名相同。
程序在声明对象时,将自动调用构造函数。
构造函数的原型和函数头没有声明类型。
构造函数的使用:
第一种是显式地调用构造函数:
Stock food = Stock("World Cabbage", 250, 1.25);
第二种方式是隐式地调用构造函数:
Stock garment("Furry Mason", 50, 2.5);
这两种方式本质是一样的,推荐使用。没有像下面这张方法,先创建一个临时对象,赋值给左操作数后再销毁,这样浪费了内存和效率。
Stock food;food = Stock("World Cabbage", 250, 1.25);
构造函数不仅可用于初始化新对象,还可以对已存在的对象赋新值。这是通过让构造程序创建一个新的临时的对象,然后将内容复制给stock1来实现的,随后程序调用析构函数,以删除该临时对象。
默认构造函数
当且仅当没有定义任何构造函数时,编译器才会提供默认构造函数。如果已经为类定义了构造函数后,程序员就必须为它提供默认构造函数。
析构函数
由构造函数创建对象后,程序负责跟踪该对象;对象过期时,程序将自动调用一个特殊的成员函数—析构函数。
析构函数由编译器决定何时调用,实际上完成清理工作非常有用。
析构函数也可以没有返回值和声明类型。与构造函数不同的是,析构函数没有参数。因此,Stock析构函数的原型为:
~Stock();
二、this指针
this指针指向用来调用成员函数的对象(this被作为隐藏参数传递给方法)。
每个成员函数(包括构造函数和析构函数)都有一个this指针。this指针指向调用对象。如果方法需要引用整个调用对象,则可以用表达式*this。在函数的括号后面使用const限定符将this限定为const,这样将不能使用this来修改对象的值。
然而,要返回的值并不是this(因为this是对象的指针),而是对象本身,即*this。
class Bakery{private: const int Months = 12; //无效 double costs[Months]; ...
三、类中如何声明常量
在类中直接声明常量是不可行的,因为声明类只是描述了对象的形式,并没有创建对象(没有开辟内存)。
方式一:使用枚举型
在类声明中声明的枚举的作用域为整个类,因此可以用枚举为整型常量提供作用域为整个类的符号名称:
class Bakery{private: enum {Months =12}; double costs[Months]; ...
注意:用这种方式声明枚举并不会创建类数据成员。也就是说,所有对象中都不包含枚举。Months只是一个符号名称,在作用域为整个类的代码中遇到它时,编译器用12来替换它。
方式二:使用关键字static:
class Bakery{private: static const int Months = 12; double costs[Months]; ...
这将创建一个名为Months的常量,该常量与其他静态变量存储在一起,而不是存储在对象中。因此,只有一个Months常量,被所有Bakery对象共享。
阅读全文
0 0
- 关于类容易模糊的三个知识点
- 容易模糊的概念
- 容易模糊的概念
- android中一些容易让人模糊的重要的知识点1
- Java最不容易明白的知识点【类】
- 容易混淆的知识点
- 关于IO流操作中的一些容易混淆的知识点
- Java容易搞错的知识点
- Java容易搞错的知识点
- Java容易搞错的知识点
- Java容易搞错的知识点
- PHP容易忘记的知识点
- Java容易搞错的知识点
- Java 容易忽略的知识点
- 容易忽视的java知识点
- java容易混淆的知识点
- javascript 容易忘记的知识点
- 容易混淆的小知识点
- scikit-learn Adaboost类库使用小结
- STM32CubeMx 针对407 discovery点亮LED灯
- codeforces#430 题解
- 整除个数
- Linux进程间通信——使用信号量
- 关于类容易模糊的三个知识点
- 文章标题
- 带有两个提交按钮的表单(带有不同的 action)
- Java中堆和栈的区别
- Android监听Home键广播工具类
- HDU
- |和||、&&和&的介绍
- 大型网站核心架构要素
- 本科毕设的时候用的一些word技巧,记录一下