C++——掌握类构造函数与析构函数的使用方法(二)
2021/5/11 1:25:30
本文主要是介绍C++——掌握类构造函数与析构函数的使用方法(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.分别使用无参和有参的构造函数给成员变量赋值(row=10,col=10),并输出。
代码:
#include<iostream> using namespace std; class Table { public: Table(){row = 10; col = 10;} Table(int a, int b):row(a), col(b){}; ~Table(){}; void show(); private: int row; int col; }; void Table::show() { cout << "row:" << row << endl; cout << "col:" << col << endl; } int main() { Table t1; Table t2(10, 10); t1.show(); t2.show(); return 0; }
结果:
2.使用默认参数的构造函数给成员变量赋值,并输出。
代码:
#include <iostream> using namespace std; class SDate { private: int year; int month; int day; public: SDate(int y,int m,int d); void outShow() { cout<<"year:"<<year<<endl; cout<<"month:"<<month<<endl; cout<<"day:"<<day<<endl; } ~SDate(){cout<<year<<month<<day<<endl;} }; SDate::SDate(int d,int m=4,int y=2021) { year=y; month=m; day=d; } int main() { SDate s1(20); s1.outShow(); SDate s2(5,20); s2.outShow(); return 0; }
结果:
3.使用全局对象,查看全局对象的构造顺序
代码:
#include<iostream> using namespace std; class SimpleClass { public: SimpleClass(char *time) { cout << "Create a SimpleClass!" << time << "\n"; } }; SimpleClass s("before main"); int main () { SimpleClass sm("in main"); return 0; } SimpleClass sa("after main");
结果:
4.使用静态对象,观察静态对象的构造函数的执行次数。
代码:
#include<iostream> using namespace std; class whatYouLike { public: whatYouLike(char *m) { strcpy(fruit, m); fruit[19] = '\0'; cout << "I like "<< fruit << "\n"; } char fruit[20]; }; void fn(char *f) { static whatYouLike s(f); static int i; i++; cout << i << " in fn,give you a(/an) " << f << "\n"; cout << "WhatYouLike is" << s.fruit << endl; } int main() { fn("apple"); fn("orange"); fn("banana"); return 0; }
结果:
5.动态创建对象,观察构造函数的执行。
代码:
#include<iostream> using namespace std; class SClass { public: SClass() { cout << "Create a SClass object!" << "\n"; } }; int main() { SClass *sq; sq = new SClass(); cout << "Main creates a SClass object in heap!\n"; delete sq; }
结果:
6.了解多个类之间的复用:可将一个类声明为另一个类的成员变量。
代码:
#define N 20 #include<iostream> #include<string> using namespace std; class cupCover { public: cupCover(char *myColor) { strcpy(color, myColor); color[N-1] = '\0'; cout << "The cupCover is create! color=" << color << endl; } private: char color[N]; }; class cupBody { public: cupBody() { cout << "The cupBody is created!\n"; } }; class cup { public: cup(char *colors):cupCover(colors) { cout << "The cup is created!It has cupCover and cupBody!\n"; } private: cupCover cupCover; cupBody cupBody; }; int main() { cup littleCup("black"); return 0; }
结果:
7.定义员工类Employee,员工信息有:编号,姓名,部门,成员函数有输出员工信息,修改员工信息(修改单个信息)。要求成员变量为私有的,修改员工信息的函数为保护的。设计类,使用类,并修改员工信息。(包括构造函数和析构函数)
代码:
#include<iostream> #include<string> using namespace std; class Employee { private: int number; string name; string department; public: Employee(int num,string n,string d) { number=num;name=n;department=d; } void change1(int c1,string c2,string c3) { change2(c1,c2,c3); } ~Employee() { cout<<"修改成功"<<endl; } void print() { cout<<"number:"<<number<<" name:"<<name<<" department:"<<department<<endl; } protected: void change2(int c1,string c2,string c3) { number=c1,name=c2,department=c3; } }; int main() { int a,i; string b,c,j,k; cout<<"please input the employee's number,name and department:"; cin>>a>>b>>c; Employee a1(a,b,c); cout<<"当前员工信息为:"<<endl; a1.print(); cout<<"需要修改,请输入你要修改的编号,性名,部门:"; cin>>i>>j>>k; a1.change1(i,j,k); a1.print(); return 0; }
结果:
8.定义MyDesk类,长和宽为私有成员变量。要求使用构造函数重载,实现对长和宽的赋值并输出。构造函数分别为无参数、一个参数和两个参数。设计类,并使用类。
代码:
#include <iostream> using namespace std; class MyDesk { private: int long0; int wide; public: MyDesk() { long0=3,wide=2; } MyDesk(int x):long0(x) { wide=3; } MyDesk(int x,int y):long0(x),wide(y) { } void print() { cout<<long0<<" and "<<wide<<endl; } }; int main() { MyDesk my1; cout<<"无参数的构造函数的长宽为"<<endl; my1.print(); MyDesk my2(3); cout<<"一个参数的构造函数的长宽为"<<endl; my2.print(); MyDesk my3(4,5); cout<<"两个参数的构造函数的长宽为"<<endl; my3.print(); return 0; }
结果:
这篇关于C++——掌握类构造函数与析构函数的使用方法(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享