首页 > 代码库 > 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容

网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容

 

第1节:不可变对象、不可变类;避免多次声明

 

4. Variable names must be in mixed case starting with lower case.

4. 变量名必须混合大小写且以小写字母开头

例如:line, savingsAccount

 

How to make a class immutable? ( 让类成为“不可变类”)

 

Mark all data fields private (所有数据域 均设置为“私有”属性)

全是我的!

 

No mutator functions (没有更改器函数)

谁都不准动!

 

No accessor that would return a reference/pointer to a mutable data field object ( 也没有能够返回可变数据域对象的 引用 或指针的访问器)

偷摸碰也不 行! 

 

用于多线程编程immutable object: thread-safe

 

Preventing Multiple Declarations ( 避免多次声明)

 

1. Put "#pragma once" in the first line of .h file ( 使用“杂注”)

依赖于编译器

古老的编译器不支持

 

2. Use #ifndef preprocessing instructions in .h file ( 使用“宏”)

#ifndef FILENAME_H

#define FILENAME_H

// The contents of the header file

#endif FILENAME_H

 

第2节:实例成员与静态成员

 

Rules for Static member function ( 使用静态成员函数的规则)

 

Rules1: How to invoke Static member function: (调用静态成员函数)

 

Rules2: Static member functions access other members: (静态成员函数访问 其他成员)

 

被访问
主调函数    静态        非静态
静态    通过类名/对象名  只能通过对象名
非静态   只能通过对象名
 
Use Class Name (for readablity) ( 使用类名访问静态变量/函数)
 
Use ClassName::functionName(arguments) to invoke a static function and ClassName::staticVariable.
 
#include <iostream>class A{public:	A(int a = 0)//构造函数	{		x = a;	}	static void f1();//静态成员函数	static void f2(A a);//静态成员函数private:	int x;	static int y;//静态数据成员};void A::f1(){	std::cout << A::y << std::endl;}void A::f2(A a){	std::cout << A::y << std::endl;	std::cout << a.x << std::endl;}int A::y = 25;//初始化静态数据成员void main(){	A::f1();	A mA(3);	A::f2(mA);	mA.A::f1();	system("pause");}

 

Instance or Static? ( 实例还是静态)

 

When to use STATIC in class? (何时在类中使用静态成员)

A variable or function that is not dependent on a specific instance of the class should be a static variable or function. ( 变量和函数不依赖于类的实例时)

 

For example

every circle has its own radius. Radius is dependent on a specific circle. Therefore, radius is an instance variable of the Circle class. Since the getArea function is dependent on a specific circle, it is an instance function.

Since numberOfObjects is not dependent on any specific instance, it should be declared static.

 

第3节:析构函数与友元

第4节:拷贝构造函数

第5节:示例分析

第6节:vector 类

第7节:更多编码规范

网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容