zoukankan      html  css  js  c++  java
  • 笔记一 导读

    一、声明

      所谓声明,是用来将一个object、function、class 或 template 的类型名称告诉编译器。声明并不带有细节 信息,一下都是声明:

    extern int x;            //object declaration
    int numDigits(int num);  //function declaration
    class Clock;             //class declaration
    template<class T>           
    class SmartPointer;      //template declaration

    二、定义

      所谓定义,是用来将细节信息提供给编译器。

      对object而言,其定义式是编译器为它分配内存的地点;

      对于function或function template而言,其定义式提供函数本体;

      对于class 或 class template 而言,其定义式必须列出该class或者template的所有members;

    四、默认构造函数 default constructor

      通常当你需要定义对象数组时,就会需要一个default constructor.  

    class A {
    public:
        A();          //default constructor.
    
    };
    A arrayA[10];     // call default constructor ten times.
    
    class B {
    public:
        B(int x = 0); //default constructor
    };
    B arrayB[10];
    
    class C {
    public:
        C(int x);    //not default constructor.
    };
    
    C arrayC[10];    //error.

    附带一提,如果你想要产生一个对象数组,但该对象数组类型没有提供default constructor,通常的做法是定义一个指针数组取而代之。

    五、初始化与赋值

      对象的初始化发生在它初次获得一个值的时候。对于带有constructor的类或者结构体,初始化是经由调用某个constructor达成的。这和对象的赋值动作有所不同,后者发生于“已初始化之对象被赋予新值”的时候。

      Constructors通常必须检验其引数的有效性,而大部分赋值运算符不必如此。另一方面,在新资源可被赋值过去之前,需要先行释放旧资源。

    String::String(const char *value) {
        if(value) {
            data = new char[strlen(value) + 1];
            strcpy(data, value);
        }
        else {
            data = new char[1];
            *data = '';
        }
    }
    
    String& String::operator = (const String& rhs) {
        if(this == &rhs) {
            return *this;
        }
        delete []data;
        data = new char[strlen(rhs.data) + 1];
        strcpy(data, rhs.data);
        return *this;
    }
  • 相关阅读:
    史上最全web.xml配置文件元素详解
    SpringMVC后台接收list类型的数据的实现方式
    史上最全的maven的pom.xml文件详解
    阿里菜鸟同学迟到的2018年个人总结(文末彩蛋)
    可以落地的DDD到底长什么样?
    欠的债,这一次都还给你们
    主流分布式架构的风流韵事...
    分布式架构的前世今生...
    分布式架构之美~
    征服诱人的Vagrant!
  • 原文地址:https://www.cnblogs.com/wiessharling/p/3346357.html
Copyright © 2011-2022 走看看