博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C++]C++学习笔记(四)
阅读量:5341 次
发布时间:2019-06-15

本文共 1364 字,大约阅读时间需要 4 分钟。

1,C++为类提供的特殊成员函数 默认构造函数  编译器提供一个不接受任何参数,也不执行任何操作的构造函数,在创建类对象的时候会被调用,如果现式的定义了构造函数,那么 默认构造函数将不会被调用。 默认析构函数   复制构造函数  复制构造函数用于将一个对象复制到新创建的对象中,它用户在初始化过程中而不是在赋值过程中,类的复制构造函数的原型如下Class_name(const Class_name &);  何时调用复制构造函数:新建一个类对象并将其初始化为同类现有的类对象的时候,复制构造函数将被调用。  假设motto是一个StringBad类的对象,则以下几种情况都将调用复制构造函数  StringBad ditto(motto);  StringBad ditto=motto;  StringBad ditto =StringBad(motto);  每当程序生成对象的副本时候,都将调用复制构造函数,比如按值传递, 复制构造函数的作用是逐个复制非静态成员的值 在类的设计中应该定义一个显式的复制构造函数,使每个对象都有自己的内存空间 赋值运算符  在类的设计中应该定义一个显式的赋值重载运算符,使每个对象都有自己的内存空间, 地址运算符

2,类的静态成员函数  1,不能通过对象去调用静态成员函数,因为静态成员函数是属于整个类的,  2,因为静态成员函数不与特定的对象关联,所以只能调用静态成员

[cpp]
 
  1. #include <stdio.h>   
  2. #include <string.h>  
  3. #include <stdlib.h>  
  4.   
  5. class String{  
  6. public:  
  7.     String(const char*str = NULL);  
  8.     String(const String &another);  
  9.     ~String();  
  10.     String& operator =(const String &rhs);  
  11. private:  
  12.     char* m_data;  
  13. };  
  14.   
  15.   
  16. String::String(const char*str)  
  17. {  
  18.     if(str == NULL)  
  19.     {  
  20.         m_data = new char[1];  
  21.         m_data = '\0';  
  22.     }  
  23.     else  
  24.     {  
  25.         m_data = new char[strlen(str)+1];  
  26.         strcpy(m_data,str);  
  27.     }  
  28. }  
  29.   
  30. String::String(const String&another)  
  31. {  
  32.     m_data = new char[strlen(another.m_data)+1];  
  33.     strcpy(m_data,another.m_data);  
  34. }  
  35.   
  36. String & String::operator=(const String &rhs)  
  37. {  
  38.     if(this ==&rhs)  
  39.     {  
  40.         return *this;  
  41.     }  
  42.     delete []m_data;  
  43.     m_data = new char[strlen(rhs.m_data)+1];  
  44.     strcpy(m_data,rhs.m_data);  
  45.     return*this;  
  46. }  
  47.   
  48. String::~String()  
  49. {  
  50.     delete []m_data;  
  51. }  

转载于:https://www.cnblogs.com/zhiliao112/p/4069202.html

你可能感兴趣的文章
Python的数据类型--数字--字符串
查看>>
session的方法
查看>>
Lucene的步骤
查看>>
spring的依赖注入
查看>>
redis 的安装
查看>>
C++ 中 new 操作符内幕:new operator、operator new、placement new
查看>>
你可能忽略的json的坑!!!
查看>>
CentOS 安装man man-pages
查看>>
Ubuntu配置SSH服务器
查看>>
数据类型转换
查看>>
[Knowledge-based AI] {ud409} Lesson 11: 11 - Classification
查看>>
appium 获取微信webview设置
查看>>
vs编译完提示不支持尝试的执行操作
查看>>
clock函数学习链接
查看>>
java POi excel 写入大批量数据
查看>>
linux下修改tomcat使用的jdk版本
查看>>
hdu 1005 Number Sequence
查看>>
【cs229-Lecture2】Gradient Descent 最小二乘回归问题解析表达式推导过程及实现源码(无需迭代)...
查看>>
Spoj SUBLEX - Lexicographical Substring Search
查看>>
GSM和GPRS区别
查看>>