第八章 类和对象
类是对象的抽象(不占内存),对象是类的具体实例(占存储空间)
默认私有
struct声明的类若不做声明,全是public,class则相反。
成员函数可以访问本类中的任何成员。不占用对象的存储空间(this指针)。
类声明 和函数定义 一般是分别放在两个文件中的。
第九章 关于类和对象的进一步讨论
构造函数没有返回值,在定义是无需声明类型,不需要调用,在声明对象时自动运行。也可以不定义构造函数。
重载构造函数。。 无参构造函数定义对象时 为 box a;不要写成 box a() 切记。
应该在声明构造函数时指定默认值,而不是在定义构造函数是指定默认值。一个类只能有一个默认构造函数,也不能再定义重载构造函数。避免歧义。如 Time();Time(int 1,int 2,int 3) 则 Time t1;有歧义。
一个类可以有多个构造函数 ,但只能有一个析构函数。
先构造的后析构,后构造的先析构(相当于栈)。
对象数组定义初始化:Student Stud[3] = {Student(1,9,9),Student(2,9,9),Student(3,9,9)};
指向对象成员的指针与普通指针定义一样,但指向对象成员函数的指针与普通不一样。。 void(Time::*p1)(); p1=&Time::get_time;(t1.*p3)();
如果一个对象被定义为常对象,则不能调用该对象的非const型的成员函数。可以将函数声明为const再调用。void get_time()const; 可变的数据成员声明 mutable int count;
数据成员 非const成员函数 const成员函数
非const的数据成员 可以引用,也可以修改 可以引用但不可以修改
const数据成员 可以引用但不可以修改 可以引用但不可以修改
const对象的数据成员 不允许引用和改变值 可以引用但不可以修改
对象的赋值 s1=s2 s1,s2为同一类
对象的复制 Student stu2(stu1);将stu1复制到stu2.也可以用 Student stu2=stu1;
非静态数据成员函数有this指针,而静态成员函数没有this指针、主要访问静态数据成员。
类是对象的抽象(不占内存),对象是类的具体实例(占存储空间)
默认私有
struct声明的类若不做声明,全是public,class则相反。
成员函数可以访问本类中的任何成员。不占用对象的存储空间(this指针)。
类声明 和函数定义 一般是分别放在两个文件中的。
第九章 关于类和对象的进一步讨论
构造函数没有返回值,在定义是无需声明类型,不需要调用,在声明对象时自动运行。也可以不定义构造函数。
重载构造函数。。 无参构造函数定义对象时 为 box a;不要写成 box a() 切记。
应该在声明构造函数时指定默认值,而不是在定义构造函数是指定默认值。一个类只能有一个默认构造函数,也不能再定义重载构造函数。避免歧义。如 Time();Time(int 1,int 2,int 3) 则 Time t1;有歧义。
一个类可以有多个构造函数 ,但只能有一个析构函数。
先构造的后析构,后构造的先析构(相当于栈)。
对象数组定义初始化:Student Stud[3] = {Student(1,9,9),Student(2,9,9),Student(3,9,9)};
指向对象成员的指针与普通指针定义一样,但指向对象成员函数的指针与普通不一样。。 void(Time::*p1)(); p1=&Time::get_time;(t1.*p3)();
如果一个对象被定义为常对象,则不能调用该对象的非const型的成员函数。可以将函数声明为const再调用。void get_time()const; 可变的数据成员声明 mutable int count;
数据成员 非const成员函数 const成员函数
非const的数据成员 可以引用,也可以修改 可以引用但不可以修改
const数据成员 可以引用但不可以修改 可以引用但不可以修改
const对象的数据成员 不允许引用和改变值 可以引用但不可以修改
对象的赋值 s1=s2 s1,s2为同一类
对象的复制 Student stu2(stu1);将stu1复制到stu2.也可以用 Student stu2=stu1;
非静态数据成员函数有this指针,而静态成员函数没有this指针、主要访问静态数据成员。