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

来源:互联网 发布:中国父母知乎 编辑:程序博客网 时间:2024/05/18 02:10

今天才知道原来C的结构体也能有构造函数,虚构函数,从来没用过,受教了!

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

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

今天刚好用到了,以为很简单,结果了,犯了一些错误,现将错误记录,以备后查,示例源代码如下:

复制代码
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 {
22 set(this,(ST*)&s)

24 }
25 ST(const ST& s)//复制构造函数
26 {

28 *this = s;
29 }
30 };
31 int main()
32 {
33 ST a ; //调用默认构造函数
34 vector<ST> v;
35 v.push_back(a); //调用复制构造函数
36 ST s = v.at(0); //调用=函数
37 cout << s.a <<" " << s.b << endl;
38 cin >> a.a;
39 return 0;
40 }
0 0