-
静态成员数据和静态成员函数的访问
查看全部 -
普通数据成员前加static成为静态数据成员(运用在记录自己类中某种状态)
静态数据成员不依赖于对象,只依赖于类,不依赖于构造函数,必须单独实例化。
普通数据成员只有实例化以后才存在。
查看全部 -
普通数据成员
普通成员函数
用const修饰后变为常数据成员和常成员函数
查看全部 -
静态数据成员:不依赖于对象(并不随着对象的产生而产生),依赖于类,单独初始化
静态成员函数
静态数据成员与成员函数可以通过类来访问
在定义对象的时候静态数据成员的个数不会变化,始终为一个
在静态成员函数中无法调用非静态成员函数和非静态的数据成员(静态成员函数不会把this指针作为参数)
非静态的成员函数可以调用静态的成员函数和数据成员
查看全部 -
友元类注意事项
友元只是封装的的补充,友元是类的封装性更差
定向暴露数据
查看全部 -
友元类
friend 类名,需要在之前申明该类
可以在circle类中访问coordinate类
查看全部 -
friend 位置可写到最外面,也可写在public, private中
查看全部 -
time.cpp
查看全部 -
Time.h
查看全部 -
友元成员函数
查看全部 -
友元类
友元函数:友元全局函数,友元成员函数
友元成员函数:(声明为其他类的成员函数)
用关键字 friend 接友元函数,传入当前当前类的对象引用或指针,能够访问到私有成员,或保护成员
查看全部 -
注意一点:
引用型参数应该在能被定义为const的情况下,尽量定义为const
除非是想通过引用来改变它的值。
查看全部 -
http://www.cnblogs.com/xiaofengkang/archive/2011/05/16/2048262.html
引用的总结,
程序中,任何临时“对象”都是const类型的,比如 : cout<<"hello world"<<endl; //"hello world" 默认就是一个const类型的
倘若有个函数这么写:string_t(string &s);
调用: string_t("hellow world");
这是非法的,会报错,原因就是 : 创建引用的时候,"hello world" 是一个const类型,不能转化成非const类型。
如果想要创建引用变量,必须在前面加上const关键字来修饰。
例2:
//函数定义
void fun1(int& x)
{
cout<<x<<endl;
}
调用:
const int a=10;
fun1(a);
结果就是报错。
将定义改成如下(加上了const关键字):
void fun1(const int& x)
{
cout<<x<<endl;
}
就正常运行
查看全部 -
在加法当中,我们并不希望改变某一个加数的值,所以加上const只是为了编程的规范(不写也可以)。
查看全部 -
#include <iostream>
using namespace std;
/**
* 定义一个矩形类模板Rect
* 成员函数:calcArea()、calePerimeter()
* 数据成员:m_length、m_height
*/
template<typename T>
class Rect
{
public:
Rect(T length,T height); //!!!!!!!!!!!!!
T calcArea();
T calcPerimeter();
public:
T m_length;
T m_height;
};
/**
* 类属性赋值
*/
template<typename T>
Rect<T>::Rect(T length, T height)
{
m_length = length;
m_height = height;
}
/**
* 面积方法实现
*/
template<typename T>
T Rect<T>::calcArea()
{
return m_length * m_height;
}
/**
* 周长方法实现
*/
template<typename T>
T Rect<T>::calcPerimeter()
{
return ( m_length + m_height) * 2;
}
int main(void)
{
Rect<int> rect(3, 6);
cout << rect.calcArea() << endl;
cout << rect.calcPerimeter() << endl;
return 0;
}
查看全部
举报