{
return height*width*depth;
}
};
int main()
{
Box thisbox(3,4,5); //声明一个类对象并初始化
cout return 0;
}
这样 , 两个函数都默认为内联函数构造函数的写法c语言了 。
构造函数的八种方法构造函数就是一类特殊的方法 。
他不同于其他方法的地方
一、创建对象时构造函数自动运行,而一般方法必须有调用语句调用才能执行
二、构造函数与类名必须相同(含大小写)
三、构造函数不能有返回值类型实例化的语句中对象后面括号里的参数就是调用构造函数的参数,如果后面啥都没有则调用没有参数的构造函数(如果没有自定义构造函数,编译器会自动合成一个没有参数的构造函数,因此也可以实例化),如果是用T obj = _obj这种形式的实例化语句则调用拷贝/移动构造函数 。
总之 , 实例化需要构造函数 。构造函数用途: 构造函数用来初始化对象 。如果这个理解了,那你以上的疑问就自然解决了 。比如你要建立一个铅笔的对象 。那么你可以用构造函数来控制它的初始状态,如长度、宽度、颜色等 。2.构造函数的调用: 构造函数也并非是完全自动调用 。平时我们new对象的时候其实就是在调用构造函数 。比如 (哪铅笔做例子) Pen p=new Pen();//这是继承自Object类的默认构造函数 。Pen p2=new Pen(2,Color.Red);//这个p2实例是有2号粗细的红颜色铅笔 。
如何用c语言实现CString的构造函数,析构函数和赋值函数类是编程人员表达自定义数据类型构造函数的写法c语言的C++机制 。它和C语言中的结构类似构造函数的写法c语言,C++类
支持数据抽象和面向对象的程序设计,从某种意义上说,也就是数据类型的设
计和实现 。
那么
String
类的原型如下
class
String
{
public:
String(const
char
*str=NULL);
//构造函数
String(const
String
other);
//拷贝构造函数
~String(void);
//析构函数
String
operator=(const
String
other);
//等号操作符重载,赋值函数
ShowString();
private:
char
*m_data;
//字符指针
};
String::~String()
{
delete
[]
m_data;
//析构函数 , 释放地址空间
}
String::String(const
char
*str)
{
if
(str==NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'/0'构造函数的写法c语言;
{
m_data=https://www.04ip.com/post/new
char[1];
*m_data='https://www.04ip.com/0';
}
else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串;
{
int
length=strlen(str);
m_data=https://www.04ip.com/post/new
char[length+1];
strcpy(m_data,str);
}
}
String::String(const
String
other)//拷贝构造函数 , 功能与构造函数类似 。
{
int
length=strlen(other.m_data);
m_data=https://www.04ip.com/post/new
[length+1];
strcpy(m_data,other.m_data);
}
String
String::operator
=(const
String
other)
//赋值函数
{
if
(this==other)//当地址相同时 , 直接返回;
return
*this;
delete
[]
m_data;//当地址不相同时 , 删除原来申请的空间,重新开始构造;
int
length=sizeof(other.m_data);
m_data=https://www.04ip.com/post/new
[length+1];
strcpy(m_data,other.m_data);
return
*this;
}
String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问;
推荐阅读
- Java代码运行规律,java 代码运行
- html5特效带音乐网站,html5制作音乐排行榜
- cpu过热死机是什么样的,cpu过热会不会开不了机
- word如何绘制圆滑曲线,word中怎么画出平滑的曲线
- mysql打错后怎么返回 mysql写错了怎么结束
- 手机为什么突然很亮很暗,手机为什么突然很亮很暗怎么回事
- linux命令创建文本,linux中创建文本
- mongodb日期事件范围查询,mongodb 时间范围查询
- 笔记本1650显卡怎么样,笔记本1650显卡是什么水平