当前位置: 代码迷 >> 综合 >> 类的构造函数和析构函数 Class Constructors and Destructors
  详细解决方案

类的构造函数和析构函数 Class Constructors and Destructors

热度:77   发布时间:2023-12-14 22:40:09.0

首先要说明,这两个字中国人是乱翻译的,像这样的翻译还有很多,估计哪个砖家喝高了,duang 一下,就翻译成这样了

socket 套接字

handle 句柄

instance 实例


字典上constructor 是这样翻译的:

我是查的朗文词典 没有constructor ,只有construct  加or  就是做这个的人  ,初中老师是这样教我的

construct 1, to build a large building, bridge, road etc 构筑,建造

                2, an idea formed by combining pieces of knowledge 构想, 概念

                3, formal something that is built or made  [正式]建造物; 构成物


collins 的翻译也差不多

               1 , If you construct something such as building, road, or machine, you build it or make it

                2, If you construct something such as an idea, a piece of writing, or a system, you create it by putting different parts together


destruction 1 Destruction is the act of destroying something, or the state of being destroyed              //  摘自collins

                   2 the act or process of destroying something   破坏                                                           // 摘自朗文



看完翻译, construct 就是build 或者make 的意思

                   destruct   就是 destroy 的意思


本来很简单的两个词,硬是被翻译得看不懂了。



进入正题

我们先定义一个class

// stock00.h -- Stock class interface
// version 00
#ifndef STOCK00_H_
#define STOCK00_H_#include <string>class Stock // class declaration
{
private:std::string company;long shares;double shar_val;double total_val;void set_tot() { total_val = shares * share_val; }
public:void acquire(const std::string & co, long n, double pr);void buy(long num, double price);void sell(long num, double price);void update(double price);void show();
};    // note semicolon at the end


对于一个class来说,constructor 和 Destructor 某种程度是需要标准配备的, 下面我们一起讨论哈

为什么需要它们以及怎么去实现它们。

在C++里面,可以像使用标准类型(standard types) 一样去使用class object.

但是在初始化部分,还是有区别的

int year = 2001;     //可以这样玩
struct thing
{char *pn;int m;
};
thing amabob = {"wodget", -23};   //同样是可以的
Stock hot = { "Sukie's Autos, Inc.", 200, 50.25};   //  不准这样玩


    你不能这样去初始化一个Stock , 因为在Stock里面,有private 类型,也就是说,这种数据成员,函数是不能直接去

访问的。想访问这样的类型,唯一的办法是通过成员函数。那就是说,如果你想成功的去初始化一个object,那么你需要一个合适的成员函数,(当然,你可以把里面的private 成员改为public, 但是这样做,就违背了做用class的初衷: 数据隐藏.)


   一般来说,最好所有的object在创建的时候,就被初始化好。比如, 看看下面的code.

Stock gift;
gift.buy(10, 24.75);


对于当前Stock 类的实现, 我们没有给它的company 成员一个值。

如果要这样用,我们只能假设用户在调用任何成员函数之前去调用  acruire() 函数。

但是这种假设是没法保证一定成立的。为了解决这个问题, C++ 提供了一种特殊的成员函数,叫做class constructor.

用来构建新的object 以及给它的成员赋值。









  相关解决方案