在线报名 | 加入收藏 | 学校地图

电话:400-0379-707 QQ:710034203

首页 > 学习园地 > 技术教程 > 正文阅读

洛阳北大青鸟:C语言的初始化和其赋值辨析

发布时间:2013-03-08 14:49:57 点击:0
洛阳北大青鸟导读:一、初始化 :用于为变量指定初始值,对于类而言,指的是构造函数。备注:如果声明中有初始化,那么它其实是定义。例如: externdouble pi = 0;此时pi是定义,所以如果这样用的话会出错:extern double pi...

一、初始化 :用于为变量指定初始值,对于类而言,指的是构造函数。

备注:如果声明中有初始化,那么它其实是定义。

例如: externdouble pi = 0;

此时pi是定义,所以如果这样用的话会出错:

extern double pi = 0;

extern double pi = 1; // 2个extern且初始化

默认构造函数(default constructor):指可以"无需任何引数就可被调用者",这样的一个构造函数如果不是没有任何参数,就是每个参数都有默认值。通常当你要定义对象数组时,就会需要一个默认构造函数。

拷贝构造函数(copy constructor):指以某个对象作为另一个同型对象的初值。它最重要的用途是用来定义以传值的方式来传递和传回对象,换就话说,pass-by-value就是调用拷贝构造函数的同义词。

例子:

class String {

public:

String(); // default constructor

String(const String & rhs); // copy constructor

public:

String& operator=(const String& rhs) {

if (this == &rhs) return *this;

delete [] data;

data = new char[strlen(rhs.data] + 1];

strcpy(data, rhs.data);

retrun *this;

}

private:

char *data;

};

String s1; // 默认构造函数

String s2(s1); // 拷贝构造函数

String s3 = s2; // 拷贝构造函数

二、赋值:简单地说,赋值发生在当你赋值时。

例如:int i= 0; // 这是初始化

i= 20; //这是赋值

赋值和初始化本质是不同的操作,赋值发生在为已初始化的对象赋予新值的时候,初始化发生对象初次获得一个值的时候,或者说是在赋值外的所有地方,例如定义、函数返回、参数传递和捕获异常时。

对于int和double这些内置类型来说,赋值和初始化的操作基本上是相同的,简单的复制一些位而已。

但是对于用户自定义类型,例如class而言,则是完全不同。实例请参见String类的实现,此时初始化操作就是构造函数,通常处理是申请内存后拷贝;而赋值不同,它是先施放原有内存后再申请新内存,最后拷贝。此时,套用专业术语来说,初始化就是构造函数,赋值就是重载=运算符。

热词搜索: 洛阳 北大青鸟 C语言
分享该网页到:   转播到腾讯微博  分享到QQ空间
  • ①理论课
  • ②上机课
  • ③职业导向训练(COT)
  • ④指导学习课(DLC)
  • ⑤项目案例课
  • ⑥在线培训课(OLTL)
  • ⑦阶段项目课
  • ⑧毕业设计课
人才招聘 | 视频专区 | 专题活动 | 认证查询 | 网站地图