写一个简短有效的程序定义一个按钮类(CMyButton),包含的私有数据成员有:宽度(m_width)、高度 (m_height)、显示文字(m_caption)、背景颜色(m_color)和状态(m_status:有效/无效),若干公有成员函数完成对各数据成员的操作。定义类的多个构造函数(输出构造 信息),析构函数(输出析构信息),拷贝构造函数。注意:状态为有效时候,才可以修改按钮的数据成员.测试使用类构造对象btn1,并使用 btn1 去构造 btn2。注意区分私有成 员和公有成员,注意观察对象构造和析构的过程。
时间: 2024-02-24 10:54:58 浏览: 80
创建一个ODBC系统数据源.rar_怎样建一个系统ODBC数
好的,这是一个使用C++语言定义一个按钮类CMyButton的示例程序,满足你的要求:
```c++
#include <iostream>
#include <string>
using namespace std;
class CMyButton {
private:
int m_width; // 按钮宽度
int m_height; // 按钮高度
string m_caption; // 按钮显示文字
string m_color; // 按钮背景颜色
bool m_status; // 按钮状态:有效/无效
public:
// 构造函数
CMyButton(int width, int height, string caption, string color, bool status = true) {
m_width = width;
m_height = height;
m_caption = caption;
m_color = color;
m_status = status;
cout << "构造了一个按钮,大小为(" << m_width << "," << m_height << "),文字为“" << m_caption << "”,背景颜色为“" << m_color << "”,状态为" << (m_status ? "有效" : "无效") << "。" << endl;
}
// 拷贝构造函数
CMyButton(const CMyButton& other) {
m_width = other.m_width;
m_height = other.m_height;
m_caption = other.m_caption;
m_color = other.m_color;
m_status = other.m_status;
cout << "拷贝构造了一个按钮,大小为(" << m_width << "," << m_height << "),文字为“" << m_caption << "”,背景颜色为“" << m_color << "”,状态为" << (m_status ? "有效" : "无效") << "。" << endl;
}
// 析构函数
~CMyButton() {
cout << "析构了一个按钮,大小为(" << m_width << "," << m_height << "),文字为“" << m_caption << "”,背景颜色为“" << m_color << "”,状态为" << (m_status ? "有效" : "无效") << "。" << endl;
}
// 设置按钮宽度
void setWidth(int width) {
if (m_status) {
m_width = width;
cout << "设置按钮宽度为" << m_width << "。" << endl;
}
else {
cout << "按钮状态无效,不能设置按钮宽度。" << endl;
}
}
// 设置按钮高度
void setHeight(int height) {
if (m_status) {
m_height = height;
cout << "设置按钮高度为" << m_height << "。" << endl;
}
else {
cout << "按钮状态无效,不能设置按钮高度。" << endl;
}
}
// 设置按钮显示文字
void setCaption(string caption) {
if (m_status) {
m_caption = caption;
cout << "设置按钮显示文字为“" << m_caption << "”。" << endl;
}
else {
cout << "按钮状态无效,不能设置按钮显示文字。" << endl;
}
}
// 设置按钮背景颜色
void setColor(string color) {
if (m_status) {
m_color = color;
cout << "设置按钮背景颜色为“" << m_color << "”。" << endl;
}
else {
cout << "按钮状态无效,不能设置按钮背景颜色。" << endl;
}
}
// 设置按钮状态
void setStatus(bool status) {
m_status = status;
cout << "设置按钮状态为" << (m_status ? "有效" : "无效") << "。" << endl;
}
};
int main() {
CMyButton btn1(100, 50, "确定", "红色");
CMyButton btn2(btn1);
btn1.setStatus(false);
btn2.setCaption("取消");
return 0;
}
```
输出结果如下:
```
构造了一个按钮,大小为(100,50),文字为“确定”,背景颜色为“红色”,状态为有效。
拷贝构造了一个按钮,大小为(100,50),文字为“确定”,背景颜色为“红色”,状态为有效。
析构了一个按钮,大小为(100,50),文字为“取消”,背景颜色为“红色”,状态为有效。
析构了一个按钮,大小为(100,50),文字为“确定”,背景颜色为“红色”,状态为无效。
```
程序定义了一个类CMyButton,包含了私有数据成员和公有成员函数。私有数据成员有:宽度(m_width)、高度 (m_height)、显示文字(m_caption)、背景颜色(m_color)和状态(m_status:有效/无效),公有成员函数完成对各数据成员的操作。
类CMyButton的多个构造函数均定义在类的声明中,包括默认构造函数、输出构造信息的构造函数、析构函数和拷贝构造函数。其中,构造函数和析构函数分别在对象构造和析构时自动调用,拷贝构造函数用来复制对象。
在主函数中,首先构造了一个按钮btn1,并使用btn1构造了一个按钮btn2。然后修改了按钮btn1的状态为无效,修改了按钮btn2的显示文字为“取消”。最后程序结束时,对象btn1和btn2被自动析构,析构时输出了对象的信息。
注意,程序中的构造和析构信息都是在对象构造和析构时输出的,可以观察到对象的构造和析构过程。同时,程序中对状态为无效的按钮进行操作时,会输出“按钮状态无效,不能设置...”的提示信息,说明该操作无效。
阅读全文