首页 > 代码库 > 网易云课堂_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: (静态成员函数访问 其他成员)
#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单元:万类霜天竞自由 – 对象和类的更多内容