当前位置:   article > 正文

C++程序设计 - Week 2 类和对象初探_c++调用一个类week

c++调用一个类week

面向对象程序设计方法

结构化程序设计,自顶向下,逐步求精。理解难,修改难,查错难,重用难。

面向对象的程序设计方法,设计程序的过程–>设计类的过程

一类事物—-抽象—->(共同属性–>数据结构,行为–>函数)—-封装—->类

类的定义

class 类名
{
    访问范围说明符:
        成员变量
        成员函数声明
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

面向对象程序设计语言的发展历程

1973,AT&T Dennis Ritchie,C

1983,AT&T Bjarne Stroustrup,C++

The C++ Programming Language

从客观事物抽象出类的例子

类,带函数的结构体。

class CRectangle {
    public:
        int w, h;
    void Init(int w_, int h_) {
        w = w_; h = h_;
    }
    int Area() {...}
    int Perimeter();
};
int CRectangle::Perimeter() {
    return 2 * (w + h);
}
CRectangle r;
r.Init(w, h);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

类定义的变量–>类的实例–>对象

对象的内存空间。对象的大小=所有成员变量的大小之和。(虚函数?=0?)

空类型的实例中不包含任何信息,本来求sizeof应该是0,但是当我们声明该类型的实例的时候,它必须在内存中占有一定的空间,否则无法使用这些实例。至于占用多少内存,有编译器决定。Visual Studio中,每个空类型的实例占用1字节的空间。(《剑指offer 名企面试官精讲典型编程题》P22、23,《Effective C++》中列举了使用C++经常出现的问题及解决这些问题的技巧)

class MM {
};
sizeof(MM) = 1 // ??
MM m;
sizeof(m) = 1
  • 1
  • 2
  • 3
  • 4
  • 5

对象之间可以用“=”进行赋值,其他需要运算符重载。

void PrintRectangle(CRectangle &r);
  • 1

类成员的可访问范围

private, public, protected

缺省为私有成员,而 struct 缺省为公有成员

类的成员函数内部,可以访问:当前对象的全部属性、函数;同类其它对象的全部属性、函数(??

设置私有成员的目的:强制对成员变量的访问一定要通过成员函数进行。隐藏私有成员。

szName --> char szName[5]; // 迁移
strcpy(man1.szName, "tomhhdksf"); // vs. 
man1.setName("tomhhdksf");
  • 1
  • 2
  • 3

内联成员函数和重载成员函数

内联成员函数

  • inline+成员函数
  • 整个函数体出现在类定义内部

    class B {
    inline void func1();
    void func2() {…}
    };

使用缺省参数要注意避免有函数重载时的二义性(缺省参数)

构造函数

成员函数的一种,名字与类名相同,可以有参数,不能有返回值。作用是对对象进行初始化对象生成时,构造函数自动被调用。

如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数。默认构造函数无参数,不做任何操作。

如果定义了构造函数,则编译器不生成默认的无参数的构造函数。

Complex c1; // 默认构造函数被调用
Complex *pc = new Complex; // 默认构造函数被调用

CSample array1[2]; // 调用两次无参构造函数
CSample array2[2] = {4, 5};
Test array1[3] = {1, Test(1, 2)}
Test *pArray[3] = {new Test(3), new Test(1, 2)}; // pArray[2]未经初始化的指针,只调用两次构造函数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/806860
推荐阅读
相关标签
  

闽ICP备14008679号