• [C++]C++学习笔记(四)


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

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

    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 = '';  
    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. }  
  • 相关阅读:
    转:PCIe基础知识
    转:HDMI介绍与流程
    Java EJB JBoss
    冒泡排序
    多线程
    快排
    Talk is cheap,show me the code
    oracle union
    Oracle 【to_number】【instr】
    DB 【ACID】
  • 原文地址:https://www.cnblogs.com/zhiliao112/p/4069202.html
Copyright © 2020-2023  润新知