04737_C++程序设计_第2章_从结构到类的演变

例2.1

使用成员函数的实例。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 struct Point
 8 {
 9     void Setxy(double a, double b)//成员函数,用来重新设置数据成员
10     {
11         x = a;
12         y = b;
13     }
14 
15     void Display()//成员函数,按指定格式输出数据成员的值
16     {
17         cout << x << "	" << y << endl;
18     }
19 
20     double x, y;//数据成员
21 };
22 
23 void main()
24 {
25     Point a;//定义对象a
26 
27     a.Setxy(10.6, 18.5);//设置对象a的数据成员
28     a.Display();//显示对象a的数据成员
29 
30     cout << a.x << "	" << a.y << endl;
31 }

例2.2

使结构具有封装性的实例。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 struct Point
 8 {
 9 private:
10     double x, y;//数据成员
11 
12 public:
13     void Setxy(double a, double b)//成员函数,用来重新设置数据成员
14     {
15         x = a;
16         y = b;
17     }
18 
19     void Display()//成员函数,按指定格式输出数据成员的值
20     {
21         cout << x << "	" << y << endl;
22     }
23 };
24 
25 void main()
26 {
27     Point a;
28 
29     a.Setxy(10.6, 18.5);
30 
31     a.Display();
32 
33     //cout << a.x;
34 
35     //1>------已启动生成: 项目: hello, 配置 : Debug Win32------
36     //    1>  main.cpp
37     //    1>c:usersdenggl18.gdctcdocumentsvisual studio 2015projectshellohellomain.cpp(33) : error C2248 : “Point::x” : 无法访问 private 成员(在“Point”类中声明)
38     //    1>  c:usersdenggl18.gdctcdocumentsvisual studio 2015projectshellohellomain.cpp(10) : note : 参见“Point::x”的声明
39     //    1>  c:usersdenggl18.gdctcdocumentsvisual studio 2015projectshellohellomain.cpp(8) : note : 参见“Point”的声明
40     //    == == == == == 生成 : 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 == == == == ==
41         
42 }

例2.3

使用构造函数初始化对象的实例。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 struct Point
 8 {
 9 private:
10     double x, y;//数据成员
11 
12 public:
13     Point()//无参数构造函数
14     {
15 
16     };
17 
18     Point(double a, double b)//具有两个参数的构造函数
19     {
20         x = a;
21         y = b;
22     }
23 
24     void Setxy(double a, double b)//成员函数,用来重新设置数据成员
25     {
26         x = a;
27         y = b;
28     }
29 
30     void Display()//成员函数,按指定格式输出数据成员的值
31     {
32         cout << x << "	" << y << endl;
33     }
34 };
35 
36 void main()
37 {
38     Point a;//定义对象a
39     Point b(18.5, 10.6);//定义对象b并赋初值
40 
41     a.Setxy(10.6, 18.5);//设置变量a的数据成员
42 
43     a.Display();//显示变量a的数据成员
44     b.Display();//显示变量b的数据成员
45 }

例2.4

定义类的实例。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 class Point
 8 {
 9 private:
10     double x, y;//类Point的数据成员
11 
12 public:
13     Point()//类Point的无参数构造函数
14     {
15 
16     };
17 
18     Point(double a, double b)//具有两个参数的构造函数
19     {
20         x = a;
21         y = b;
22     }
23 
24     void Setxy(double a, double b)//成员函数,用来重新设置数据成员
25     {
26         x = a;
27         y = b;
28     }
29 
30     void Display()//成员函数,按指定格式输出数据成员的值
31     {
32         cout << x << "	" << y << endl;
33     }
34 };
35 
36 void main()
37 {
38     Point a;//定义类Point的对象a
39     Point b(18.5, 10.6);//定义类Point的对象b并初始化
40 
41     a.Setxy(10.6, 18.5);//为对象a的数据成员赋值
42 
43     a.Display();//显示对象a的数据成员
44     b.Display();//显示对象b的数据成员
45 }

例2.8

演示使用string对象及初始化的例子。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 #include <string>
 5 
 6 using namespace std;
 7 
 8 void main()
 9 {
10     string str1("We are here!");
11     string str2 = "Where are you?";
12 
13     cout << str1[0] << str1[11] << "," << str1 << endl;
14     cout << str2[0] << str2[13] << "," << str2 << endl;
15     cout << "please input word:";
16 
17     cin >> str1;
18 
19     cout << "length of the " << str1 << " is " << str1.size() << "." << endl;
20 }

例2.9

演示将美国格式的日期转换为国际格式的例子。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 #include <string>
 5 
 6 using namespace std;
 7 
 8 void main()
 9 {
10     cout << "Enter the date in American format"
11         << "(e.g., December 25, 2002):";
12 
13     string Date;
14 
15     getline(cin, Date, '
');
16 
17     int i = Date.find(" ");
18 
19     string Month = Date.substr(0, i);
20 
21     int k = Date.find(",");
22 
23     string Day = Date.substr(i + 1, k - i - 1);
24     string Year = Date.substr(k + 2, 4);
25     string NewDate = Day + " " + Month + " " + Year;
26 
27     cout << "Original date:" << Date << endl;
28     cout << "Converted date:" << NewDate << endl;
29 }

例2.10

演示使用complex和string对象及初始化的例子。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 #include <complex>
 5 #include <string>
 6 
 7 using namespace std;
 8 
 9 void main()
10 {
11     complex <int> num1(2, 3);
12     complex <float> num2(3.5, 4.5);
13 
14     string str1("real is ");
15     string str2 = "image is ";
16 
17     cout << str1 << num1.real() << ',' << str2 << num1.imag() << endl;
18     cout << str1 << num2.real() << ',' << str2 << num2.imag() << endl;
19 }

例2.11

演示string对象的例子。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 #include <string>
 5 #include <algorithm>
 6 #include <iterator>
 7 
 8 using namespace std;
 9 
10 void main()
11 {
12     string str1 = "we are here!", str2 = str1;
13 
14     reverse(&str1[0], &str1[0] + 12);//str1字符串的元素逆向
15 
16     cout << str1 << endl;//输出逆向后的内容
17 
18     copy(&str1[0], &str1[0] + 12, &str2[0]);//原样复制到str2
19 
20     cout << str2 << endl;//输出str2
21 
22     reverse_copy(&str2[0], &str2[0] + 12, ostream_iterator<char>(cout));//逆向输出str2
23 }

例2.12

演示string对象使用成员函数表示存储区间的例子。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 #include <string>
 5 #include <algorithm>
 6 #include <functional>
 7 #include <iterator>
 8 
 9 using namespace std;
10 
11 void main()
12 {
13     string str1 = "wearehere!", str2(str1);//使用str1初始化
14 
15     reverse(str1.begin(), str1.end());//字符串元素逆向
16 
17     cout << str1 << endl;
18 
19     copy(str1.begin(), str1.end(), str2.begin());//原样复制到str2,str2应能容纳下str1
20 
21     sort(str1.begin(), str1.end());//默认升幂排序
22 
23     cout << str1 << endl;//输出排序结果
24     cout << str2 << endl;//输出字串str2的内容
25 
26     reverse_copy(str1.begin(), str1.end(), str2.begin());//逆向复制到字串str2的内容
27 
28     cout << str2 << endl;//输出逆向后的str2的内容
29 
30     reverse(str2.begin() + 2, str2.begin() + 8);//字串str2部分逆向
31 
32     copy(str2.begin() + 2, str2.begin() + 8, ostream_iterator<char>(cout));//输出逆向后的部分内容
33 
34     cout << endl;
35 
36     sort(str1.begin(), str1.end(), greater<char>());//降幂排序
37 
38     cout << str1 << endl;//输出排序后的字符str1
39 
40     str1.swap(str2);//互相交换内容
41 
42     cout << str1 << " " << str2 << endl;
43 }

例2.13

演示string对象数组的例子。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 #include <string>
 5 #include <algorithm>
 6 #include <iterator>
 7 
 8 using namespace std;
 9 
10 void main()
11 {
12     string str[] = { "We are here!","Where are you?","welcome!" };
13 
14     for (int i = 0; i < 3; i++)
15     {
16         copy(str[i].begin(), str[i].end(), ostream_iterator<char>(cout));
17         cout << endl;
18     }
19 
20     str[0].swap(str[2]);
21     str[0].swap(str[1]);
22 
23     for (int i = 0; i < 3; i++)
24     {
25         cout << str[i] << endl;
26     }
27 }
原文地址:https://www.cnblogs.com/denggelin/p/5545040.html