【Effective C++】学习之一:声明、定义、初始化、赋值

1.声明(declaration)

用来将一个object、function、class、或者template的型别名称告诉编译器,声明是不带有细节信息。比如:

extern int x;               //object declaration
int numDigits(int number);  //function declaraton
class Clock;                //class declaration      //这些均是声明
template<class T>
class SmartPointer;         //template declaration

2.定义(definition)

将细节信息提供给编译器。对object来说,其定义就是编译器为它分配内存地址。对function或function template来说其定义就是提供函数本体(function body)。对class或class template来说,其定义式必须列出该class或template的所有members;

int x;                      //这是对象的定义式
int numDigits(int number)   //函数的定义式
{ 
  ......                   //函数的实现
}

class Clock               //类Clock的定义
{
public :
 Clock();
 ~Clock();
 int hour() const;
 int minute() const;
 int second() const;
 ...
};

template<class T>       //template的定义式
class SmartPointer
{
 public:
 SmartPointer();
 ~SmartPointer();
 T* operator->() const;
 T& operator*() const;
 ...
};

3初始化(initialization)与赋值(assignment)

对象的初始化行为发生在它初次获得一个值的时候。对于“带有constructor”的class或struct,初始化总是经由调用某个constructor达成。
对象的赋值发生在“已初始化之对象被赋值新值”。如:

string s1;                   //初始化
string s2("hello world");    //初始化
string s3=s2;                //初始化
s1=s2;                       //赋值

初始化操作是由constructor执行,赋值由operator=执行。这两个动作对应不同的函数操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值