做leetcode的时候经常看到有结构体的默认构造函数,觉得很奇怪,才发现原来c++的结构体与c语言的结构体不一样,c++的结构体更像是一个类,
C++结构体提供了比C结构体更多的功能,如默认构造函数,复制构造函数,运算符重载,这些功能使得结构体对象能够方便的传值。
比如,我定义一个简单的结构体,然后将其作为vector元素类型,要使用的话,就需要实现上述三个函数,否则就只能用指针了。
转:http://blog.csdn.net/fu_zk/article/details/10539705
- #include <iostream>
- #include <vector>
- using namespace std;
- struct ST
- {
- int a;
- int b;
- ST() //默认构造函数
- {
- a = 0;
- b = 0;
- }
- void set(ST* s1,ST* s2)//赋值函数
- {
- s1->a = s2->a;
- s1->b = s2->b;
- }
- ST& operator=(const ST& s)//重载运算符
- {
- set(this,(ST*)&s)
- }
- ST(const ST& s)//复制构造函数
- {
- *this = s;
- }
- };
- int main()
- {
- ST a ; //调用默认构造函数
- vector<ST> v;
- v.push_back(a); //调用复制构造函数
- ST s = v.at(0); //调用=函数
- cout << s.a <<" " << s.b << endl;
- cin >> a.a;
- return 0;
- }
时间: 2024-10-02 03:28:15