C++构造函数,析构函数,不在main中写任何东西依然有输出的方式,证明this指针的存在,mutable关键字,cin的读取方式,友元函数?

使用一次构造函数式构造一个对象,每次使用都是构建的不同的对象

构造的顺序与析构的相反

一个对象析构函数允许被多次调用但是这样做一般都出于特殊目的

对于一个函数,传入的参数是从左至右,那么析构是从右至左

析构函数总是无参的,不能被重载

在类中,两个函数形参一样,返回值一样,但是只要在最后加一个const(定义和实现都需要加,而对于默认参数,只需要在定义的地方写上即可),他们就能共存,编译器调用时会优先调用不含const的函数。只有const对象才能调用这样的const函数

函数后加上const(承诺不会修改当前对象的数据)表示对当前对象只能做只读操作

形参是本类类型都要加引用,这叫拷贝构造函数,如果自己没写拷贝构造函数那么编译器会默认创建一个自己的拷贝构造函数,并完成所有成员的所有复制,如果自己没写构造函数则会生成一个无参构造函数,这个构造函数什么都不做,但是只要定义了构造函数,编译器则不会生成无参构造函数,析构函数也是一样,如果没定义编译器则自动生成,生成的析构函数什么都不做。

如何证明类中的函数都含有一个潜在的参数this

 //建立一个const Person类型调用其中的非const函数input.虽然飘红,但是只要编译,会出现如下结果  
const Person p1; p1.input(); //不能将“this”指针从“const Person”转换为“Person &”

数据保护是以类为单位,不是以对象为单位

定义一个变量在一个常量函数中也可以改变!!!mutable int cur;

不在main中写任何东西也照样输出的原理

第一:全局变量

#include<iostream>
#include "Person.h"

    using namespace std;
    int func(){ cout << "hello" << endl; return 0; };
    int x = func();
int main()
{
    

第二:使用类

#include<iostream>
#include "Person.h"
using namespace std;
class X
{
public:
    X(){ cout << "I am X" << endl; };
};

X x; 
int main()
{
    return 0;
}

当输入cin时,cin默认尝试两种读取方式

cin.operator>>(a) operator>>(cin,a);如果两种都行就会产生模糊,如果第一个不行,可以自己编写第二个函数来满足自己的输入要求

友元函数(是外面的函数,并不是成员函数),比如想调用类中的私有变量,但是不想给其他函数用到,只想给特定的函数调用,这样就可以将那个函数设置为友远函数

格式为:friend +标准函数定义 , 这样这个函数就能提取类的私有数据,友元函数的实现不需要加friend.

http://www.cnblogs.com/BeyondAnyTime/archive/2012/06/04/2535305.html 关于友元的比较好的文章