码迷,mamicode.com
首页 > 编程语言 > 详细

C++结构体:默认构造函数,复制构造函数,重载=运算符

时间:2015-08-25 13:39:23      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

做leetcode的时候经常看到有结构体的默认构造函数,觉得很奇怪,才发现原来c++的结构体与c语言的结构体不一样,c++的结构体更像是一个类,

C++结构体提供了比C结构体更多的功能,如默认构造函数,复制构造函数,运算符重载,这些功能使得结构体对象能够方便的传值。

比如,我定义一个简单的结构体,然后将其作为vector元素类型,要使用的话,就需要实现上述三个函数,否则就只能用指针了。

转:http://blog.csdn.net/fu_zk/article/details/10539705

  1. #include <iostream>  
  2. #include <vector>  
  3.  using namespace std;  
  4. struct ST  
  5. {  
  6.     int a;  
  7.     int b;  
  8.     ST()  //默认构造函数  
  9.     {  
  10.         a = 0;  
  11.         b = 0;  
  12.     }  
  13.       
  14.     void set(ST* s1,ST* s2)//赋值函数  
  15.     {  
  16.         s1->a = s2->a;  
  17.         s1->b = s2->b;  
  18.     }  
  19.     ST& operator=(const ST& s)//重载运算符  
  20.     {  
  21.         set(this,(ST*)&s)  
  22.     }  
  23.     ST(const ST& s)//复制构造函数  
  24.     {  
  25.         *this = s;    
  26.     }  
  27. };  
  28. int main()  
  29. {  
  30.     ST a ;  //调用默认构造函数  
  31.     vector<ST> v;  
  32.     v.push_back(a);  //调用复制构造函数  
  33.     ST s = v.at(0);  //调用=函数  
  34.     cout << s.a <<"  " << s.b << endl;  
  35.     cin >> a.a;  
  36.     return 0;  
  37. }  

C++结构体:默认构造函数,复制构造函数,重载=运算符

标签:

原文地址:http://www.cnblogs.com/qiaozhoulin/p/4757015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!