C++关于类和对象的一些注意点

类的访问控制:在C++中可以给成员变量和成员函数定义访问级别
                         public修饰成员变量和成员函数可以在类的内部和类的外部被访问
                         private修饰成员变量和成员函数只能在类的内部被访问                                                                                                                        没有权限修饰的成员和函数默认是private的

struct与class的区别:在用struct定义类时,所有成员的默认属性为public
                                   在用class定义类时,所有成员的默认属性为private

构造函数:与类名相同的成员函数叫做构造函数,可以带参数,可以不带参数,无返回类型。一般情况下C++编译器会在对象创建时自动调用构造函数,在一些情况下则需要手工调用构造函数。

析构函数:C++中的类可以定义一个特殊的成员函数清理对象,这个特殊的成员函数叫做析构函数,函数名为在构造函数名前加~符号,无参数,无返回类型。析构函数在对象销毁时自动被调用。析构函数的调用顺序与对应的构造函数调用顺序相反

默认构造函数:1)默认无参构造函数
                               当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空
                         2)默认拷贝构造函数
                               当类中没有定义拷贝构造函数时,编译器默认提供一个默认拷贝构造函数,简单的进行成员变量的值复制
 

拷贝构造函数与普通构造函数:拷贝构造函数用于对象赋值时,默认拷贝构造函数只是成员变量简单赋值,涉及地址时,可能要自己定义拷贝构造函数。普通构造函数用于对象的初始化。

对象初始化列表:1. 如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,没  有默认构造函数。这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数,如果没有初始化列表,那么他将无法完成第一步,就会报错。2.当类成员中含有一个const对象时,或者是一个引用时,他们也必须要通过成员初始化列表进行初始化,因为这两种对象要在声明后马上初始化,而在构造函数中,做的是对他们的赋值,这样是不被允许的。成员变量的初始化顺序与声明的顺序相关,与在初始化列表中的顺序无关初始化列表先于构造函数的函数体执行

 匿名对象:匿名对象的生命周期只在它所处的哪一行代码中。

new和delete:new和deletenew用于动态地分配和撤销内存空间。new和delete是运算符,不是函数,因此执行效率高。

静态成员变量和静态成员函数:关键字 static 可以用于说明一个类的成员,静态成员提供了一个同类对象的共享机制把一个类的   成员说明为 static 时,这个类无论有多少个对象被创建,这些对象共享这个 static 成员静态成员局部于类,它不是对象成员,在类的外部进行初始化                                                                                                                                                                                     静态成员函数数冠以关键字static静态成员函数提供不依赖于类数据结构的共同操作,它没有this指针在类外调用静态成员函数用 “类名 :: ”作限定词,或通过对象调用。静态成员函数中,不能用普通变量,只能使用静态成员变量

友元函数和友元类:友元函数不是类的内部函数,是一个全局函数,但是可以改变类的私有属性友元函破坏了类的封装性;若B类是A类的友员类,则B类的所有成员函数都是A类的友员函数友员类通常设计为一种对数据操作或类之间传递消息的辅助类


 

猜你喜欢

转载自blog.csdn.net/li_Xing666/article/details/81192411