1、class 默认成员变量private,struct默认是public;
2、class Screen
{
public:
Screen& set( index,index ) const;
}
const 成员函数set中,this的类型是一个指向const对象的const指针,就是说,指针地址不可以改,内容也不可以改。
而非const函数,this指针地址不可以改,但是指向的内容可以改。
3、变量名字查找,先类类型,后全局;全局限定符::
<span style="font-size:14px;">int height;
class circle
{
public:
int height;
private:
int area()
{
return 4*::height;//全局height!
}
}</span>
4.构造函数
作用:保证数据成员变量具有合适的初值。
构造函数名与类名相同,没有返回值。
构造函数不能申明为const;
1)Sales_item::Sales_item(const string &book):isbn(book), units_sold(0), price(33.0){ } //显式初始化
2)Sales_item::Sales_item(const string& book) //在isbn=book之前已初始化为空,book覆盖初值而已
{
isbn = book;
sold = 0;
price = 33.0;
}
不管成员是否在构造函数初始化列表中显式初始化,数据成员总是在初始化阶段初始化,而初始化发生在计算阶段之前!
常量以及引用变量,只能在初始化列表中进行初始化,不能赋值;
初始化顺序与初始化列表顺序无关,而是定义顺序。
简单程序:
#include <iostream>
using namespace std;
class param
{
public:
param()
{
x = 10;
cout << "param的默认构造函数!" << x << endl;
}
param(int i)
{
x = i;
cout << "param的带参数的构造函数!"<< x << endl;
}
~param(){ cout << "param的析构函数!" << x << endl;}
int get()
{
return x;
}
private:
int x;
};
class rect
{
public:
rect()
{
s = 1000;
cout << "rect的默认构造函数!"<< endl;
}
rect(int i,int j,int k):s(i),width(j),length(k)
{
cout << "rect的带参数的构造函数!"<< "面积是:" << width.get()*length.get() << endl;
}
~rect()
{
cout << s << "rect的默认析构函数! " << endl;
}
private:
int s;
param length;
param width;
};
int main()
{
rect a(100,200,300);
return 0;
}
运行结果: