#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <memory>
using namespace std;
struct LatLonAlt
{
int lat; ///< latitude in degrees
int lon; ///< longitude in degrees
int alt; ///< altitude in meters
};
//测试构造函数重载
class test1 {
public:
test1 (int a, int b) {
cout << "a: " << a << endl;
cout << "b: " << b << endl;
};
test1 (int a, int b, int c) {
cout << "a: " << a << endl;
cout << "b: " << b << endl;
cout << "c: " << c << endl;
};
test1 (int a, int b, int c, int d) {
cout << "a: " << a << endl;
cout << "b: " << b << endl;
cout << "c: " << c << endl;
cout << "d: " << d << endl;
};
~test1(){};
LatLonAlt LatLonAlt_1;
};
int main()
{
int a = 10;
int b = 20;
int c = 30;
int d = 40;
//测试构造函数重载
test1 testA(a,b);
test1 testB(a,b,c);
//测试初始化一个类的智能指针
shared_ptr<test1> p1 = make_unique<test1>(a,b,c,d);
//智能指针调用类的成员并赋值
p1->LatLonAlt_1.alt = a;
p1->LatLonAlt_1.lon = b;
p1->LatLonAlt_1.lat = c;
cout << "p1->LatLonAlt_1.alt: " << p1->LatLonAlt_1.alt << endl;
cout << "p1->LatLonAlt_1.lon: " << p1->LatLonAlt_1.lon << endl;
cout << "p1->LatLonAlt_1.lat: " << p1->LatLonAlt_1.lat << endl;
return 0;
}
总结:
类中可以创建构造函数的重载函数,但是析构函数只能创建一个。
创建一个类型为 test1的智能指针。
智能指针调用类的成员并赋值