加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C++中声明类对象的同时进行初始化

(2012-08-28 18:18:26)
标签:

it

分类: C加加

这里主要陈述一下(1)在C++中声明类对象的同时进行初始化与(2)声明完类对象后再进行初始化类对象的区别。这一点在Horton的书中稍微一提,见P533.

首先看程序:

(1)
#include <iostream>
#include <string>
#include <vector>
using namespace std;

class B
{
private:
 int data;
public:
 B(){cout<<"default constructor"<<endl;}
 ~B(){cout<<"destructed"<<endl;}
 B(int i):data(i){cout<<"constructed by parameter "<<data<<endl;}

 B(const B& copy){cout<<"copy constructor is called."<<endl;data = copy.data;}

 B& operator=(const B& b){cout<<"the assignment operator overloading."<<endl;data = b.data;return *this;}
};

int main()
{
  B b(5);
  B temp = b;//声明temp的时候,同时进行初始化。

  return 0;//此时调用类的副本构造函数初始化temp,这一点要注意。
}

此时函数输出为:http://s12/middle/6ab0b9a8gc850e7978abb&690

(2)修改(1)中的main函数为:

int main()
{
  B b(5),temp;//先声明temp,再进行初始化,此时调用重载的赋值运算符函数
  temp = b;

 return 0;
}

输出结果为:http://s8/middle/6ab0b9a8gc85102bbf6c7&690



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有